目录
第一部分:颜色和样式
一.直接调整
1.颜色:
import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)
plt.plot(y,color='y')
plt.plot(y+1,color=(0,0,1))
plt.plot(y+2,color='#FF0000')
plt.plot(y+3,color='0.5')
plt.show()
1)直接用颜色英文或简写表示,如yellow<==>y;
2)用代表RGB(红绿蓝)比例的元祖表示,比例为0-1之间;
3)用代表RGB(红绿蓝)比例的#+十六进制表示,比例为00–FF之间;
4)用灰色阴影比例表示,0–1之间。
八种默认颜色及缩写:
b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white
2.线的样式:
'-' 直线
'--' 虚线
'-.' -·-·
':' 点线
3.点的样式:
'.' point marker
',' pixel marker
'o' circle marker
'v' triangle_down marker
'^' triangle_up marker
'<' triangle_left marker
'>' triangle_right marker
'1' tri_down marker
'2' tri_up marker
'3' tri_left marker
'4' tri_right marker
's' square marker
'p' pentagon marker
'*' star marker
'h' hexagon1 marker
'H' hexagon2 marker
'+' plus marker
'x' x marker
'D' diamond marker
'd' thin_diamond marker
'|' vline marker
'_' hline marker
4.样式字符串:可以将颜色、点型、线型写成一个字符串,如’ro–'表示红色O型的虚线
plt.plot(y,'y^:')
第二部分:面向对象与pyplot方式
面向对象(object-oriented)方式:接近matplotlib基础和底层的方式,定制能力强。
matplotlib对象:FigureCanvas、Figure、Axes
一.子图(subplot)
1.面向对象的方式:创建figure实例,再在其中创建若干axes实例
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)
fig = plt.figure() #创建figure实例
ax1 = fig.add_subplot(221) #用figure下的add_subplot创建axes实例
ax1.plot(x,x)
ax2 = fig.add_subplot(222)
ax2.plot(x,-x)
ax3 = fig.add_subplot(223)
ax3.plot(x,x*x)
ax4 = fig.add_subplot(224)
ax4.plot(x,np.log(x))
plt.show()
ax1 = figure.add_subplot(abc)----创建子图实例,其中a–子图总行数,b–子图总列数,a–子图位置。
2.matplotlib中pyplot方式:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)
plt.subplot(221)
plt.plot(x,x)
plt.subplot(222)
plt.plot(x,-x)
plt.subplot(223)
plt.plot(x,x*x)
plt.subplot(224)
plt.plot(x,np.log(x))
plt.show()
二.多图(Figure)
面向对象的方式中,创建多个Figure,即为多张图:
import matplotlib.pyplot as plt
fig1=plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot([1,2,3,4],[4,3,2,1])
fig2=plt.figure()
ax2=fig2.add_subplot(111)
ax2.plot([1,2,3,4],[1,2,3,4])
plt.show()
第三部分:画图规范
一.网格(grid)
1.面向对象的方式:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(x,y)
ax.grid(linestyle=':',linewidth=1,color='c')
plt.show()
2.pyplot方式:
import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)
plt.plot(y,y*2)
plt.grid(color='c',linestyle='-',linewidth='2')
plt.show()
linestyle–线型;linewidth–线宽;color–颜色。
二.图例(legend)
图例:将不同的图形对应的标签显示出来。
1.面向对象的方式:在ax.plot()时用label进行命名,然后用ax.legend()显示。
loc:位置,默认右上角,不同数字对应不同位置,0–自动选择最佳位置;
nloc:图例中的列数。
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(x,y,label='Inline label')
ax.legend(loc=0,ncol=1)
plt.show()
2.pyplot方式:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,11,1)
plt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')
plt.legend(loc=2,ncol=3)
plt.show()
三.坐标轴(grid)
1.坐标值范围(axis):
1)plt.axis()直接返回(xmin,xmax,ymin,ymax),可用列表进行调整;
1)plt.xlim()直接返回(xmin,xmax),可用列表或’xmin=a’的方式进行调整;
1)plt.ylim()直接返回(ymin,ymax),可用列表或’ymin=a’的方式进行调整。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10,11,1)
plt.plot(x,x*x)
plt.axis([-5,5,0,60])
# plt.xlim(xmin=-5)
# plt.ylim([0,60])
plt.show()
2.坐标值刻度(gca):get current axis获取当前坐标轴
非日期的坐标轴刻度更改:导入matplotlib.pyplot中的MultipleLocator模块,用于设置刻度间隔,ax=plt.gca()获取坐标轴,然后ax.xaxis.set_major_locator更改间隔。
import matplotlib.pyplot as plt
#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔
from matplotlib.pyplot import MultipleLocator
import numpy as np
x = np.arange(0,11,1)
x_major_locator=MultipleLocator(1)
plt.plot(x,x)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.show()
3.添加坐标轴(twin):
1)添加额外的y轴:.twinx()----共享x轴
2)添加额外的x轴:.twiny()----共享y轴
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,11,1)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x,x)
ax1.set_ylabel('Y1')
ax2 = ax1.twinx()
ax2.plot(x/2,2*x*x,color='r')
ax2.set_ylabel('Y2')
plt.show()