1、设置数据点型、线的类型、颜色、x/y轴的名字:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],linestyle='--',marker='o',color='r')
#linestyle:线的类型;marker:数据点的形状;color:线的颜色
plt.ylabel('增长率') #给y轴设置一个名字
plt.xlabel('时间') #给x轴设置一个名字
plt.show()
① marker:
‘.’、‘o’ 、‘+’、‘*’、'v’、‘^’、‘<’、‘>’、‘s’ (方块)、‘d’ (菱形)、‘p’(五角星)、‘h’ (六边形)
② linestyle:
‘-’ 实线 、 ‘-.’ 点划线、 ‘:’ 点线、 ‘--’ 虚线
③ color:
‘r’ 红(red)、’g’ 绿(green)、’b’ 蓝(blue)、’k’ 黑(black)、’y’ 黄(yellow)、’w’ 白(white)、’m’ 紫(magenta)、’c’ 青(cyan)
2、设置子图刻度、子图标题、子图坐标轴名字
import numpy as np
import matplotlib.pyplot as plt
fig1=plt.figure ()
ax1 = fig1.add_subplot(1,1,1)
plt.plot(np.arange(19)) #相当于ax4.plot(np.arange(19))
#修改显示刻度
ticks = ax1.set_xticks([0, 5, 10, 20])
#这些刻度还可以被改名(如果不改名,就是显示0、5、10、20)
list = ['one', 'two', 'three', 'four', 'five']
labels = ax1.set_xticklabels(list, rotation=30, fontsize='small') #rotation是这些标记旋转的角度:30°;fontsize是字体大小
#设置标题
ax1.set_title('My first matplotlib plot')
#设置x、y轴的名字
ax1.set_xlabel('Stages')
ax1.set_ylabel('Stages')
#plt.ylabel('some numbers') #这两句也是设置x/y轴的名字,但是这是整体时用这种。上面是设置子图
#plt.xlabel('stage')
#上面设置标题、轴名可以用下面两句代替
#props = {'title': 'My first matplotlib plot', 'xlabel': 'Stages', 'ylabel':'stages'}
#ax1.set(**props)
plt.show()
3、添加图例
这种示例图中,右上角的位置就是图例。图例中记录着这三条线分别代表什么
from numpy.random import randn
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(randn(1000).cumsum(), 'r', label='one') #画时添加label
ax.plot(randn(1000).cumsum(), 'g--', label='two')
ax.plot(randn(1000).cumsum(), 'k.', label='three')
ax.legend(loc='best') #画完了需要用.legend方法创建图例
#loc就是location,告诉系统这个图例放在那里。一般best,系统会找一个最合适的位置。也有其他选项,可以看一下文档
plt.show()
4、添加文本注释、设置坐标区间
import numpy as np
import matplotlib.pyplot as plt
list1=[1,2,3]
list2=[90,0,92]
#设置x,y轴的数据
x = np.array(list1)
y = np.array(list2)
#创建figure类
fig = plt.figure(figsize=(20,20))
#添加一个任意图。(也可以添加子图,用任意图是想把图形拉伸一下)
left, bottom, width, height = 0.2, 0.2, 0.5, 0.7
ax = fig.add_axes([left, bottom, width, height])
#画柱状图
plt.bar(x, y)
#设置图像的总标题
ax.set_title('AI accelerators Performance')
#设置x,y轴的标签/名字
ax.set_ylabel('TERA-OP/SEC')
ax.set_xlabel('Architecture')
#plt.ylabel('TERA-OP/SEC')
#plt.xlabel('Architecture')
#设置坐标轴区间
ax.set_ylim(85,95) #y轴坐标从85开始,到95结束
ax.set_xlim(0,5)
#plt.ylim(85,95)
#设置x,y轴的刻度
ticks = ax.set_xticks([1, 2,3])
ticks = ax.set_yticks(np.arange(85,95))
#改x轴刻度的刻度名
list = ['Branwave', '','TPU']
labels = ax.set_xticklabels(list, rotation=0, fontsize='medium')
'''
#添加特定图形
rect = plt.Rectangle((1, 1.75), 80, 85, color='r', alpha=0.3) #添加长方形,数字分别表示坐标
circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3) #添加圆形
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]],color='g', alpha=0.5) #三角形
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)
'''
#在某一个点标注文本
'''
1,90.5是这个文本的x,y坐标,
ha和va都设置为‘center',表示这个(x,y)是文本的中心;如果不设置,则(x,y)表示文本的左下顶点
'90TeraOP/S'是文本内容'''
ax.text(1,90.5,'90TeraOP/S', ha='center',va='center', family='monospace', fontsize=10)
#添加文本text以及箭头arrows进行指向。用.annotate方法
'''
'92TeraOP/S'是添加的标注文本。
xy=(2,1)是给哪个点进行的标注。
xytext是这个文本标注放在哪里。arrowprops是关于那个箭头的一些信息'''
ax.annotate('92TeraOP/S', xy=(3,92), xytext=(2,93),arrowprops=dict(facecolor='black', shrink=0.05))
#图像保存和显示
plt.savefig('fig.png')
plt.show()
输出:
References:
[1] O'Reilly, "Python for data analysis," 2nd, 2017
[3] pyplot教程