Matplotlib -- osy a mřížka

Vytvořím si nějaká data

In [1]:
f=2
t=linspace(0,2,100)
u=3.14*sin(2*pi*f*t)

Úprava os grafu

In [2]:
figure(figsize=(10,4))
plot(t,u)
xlim((-1,3))

minorticks_on()
tick_params(which='both', width=2)
tick_params(which='major', length=7, labelsize='small')
tick_params(axis='x', which='minor', length=4, color='r', pad=1)

xticks(arange(-1,3,0.25), rotation=45, fontsize=12)


grid(True)
In [3]:
figure(figsize=(10,7))
plot(t,u)
sp=subplot(111)

sp.xaxis.set_ticks(linspace(0,2,5) )
sp.xaxis.set_ticks(linspace(0,2,13),minor=True)
#minorticks_on() # tohle tam být nesmí, jinak minor tick nefunguje

grid(True, linewidth=2, linestyle='--', which='major')
grid(True, linewidth=0.5, linestyle=':', which='minor')

sp.yaxis.grid(False,'minor')

Logaritmická osa

In [2]:
plot([23, 456, 676, 89, 906, 34, 2345])
yscale('log')
grid(b=True, which='major', color='b', linestyle='-')
grid(b=True, which='minor', color='r', linestyle='--')
In [25]:
fig=figure()

ax1=subplot(221)  
title('abc')
grid()
hist(rand(1000),50)

ax2=subplot(222)
title('abc')
grid()

ax3=subplot(223)
title('abc')
grid()

# zvětším prostor mezi grafy
tight_layout()

# pokud chci mít větší kontrolu použiji
# subplots_adjust(bottom=-1, right=0.8, top=0.9)
In [17]:
ax=subplot(111)

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

plot(X, C, color="blue", linewidth=2.5, linestyle="-",label='cosinus')
plot(X, S, color="red", linewidth=2.5, linestyle="-", label='sinus')

#ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

xlim(X.min()*1.1, X.max()*1.1)
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

ylim(C.min()*1.1,C.max()*1.1)
yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])

# savefig("../figures/exercice_7.png",dpi=72)
#show()
grid()
legend(loc='upper left')
Out[17]:
<matplotlib.legend.Legend at 0x35e75d0>
In [18]:
subplot(111)

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red", linewidth=2.5, linestyle="-",  label="sine")

ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

xlim(X.min()*1.1, X.max()*1.1)
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

ylim(C.min()*1.1,C.max()*1.1)
yticks([-1, +1],
       [r'$-1$', r'$+1$'])


legend(loc='upper left')

t = 2*np.pi/3
plot([t,t],[0,np.cos(t)],
     color ='blue',  linewidth=1.5, linestyle="--")
scatter([t,],[np.cos(t),], 50, color ='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', xy=(t, np.sin(t)),  xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plot([t,t],[0,np.sin(t)],
          color ='red',  linewidth=1.5, linestyle="--")
scatter([t,],[np.sin(t),], 50, color ='red')
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$', xy=(t, np.cos(t)),  xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))


# savefig("../figures/exercice_10.png",dpi=72)
#show()