在平时处理数据的时候,因为数据可视化更能显示数据的关系。而python中的matplotlib库很好地提供了我们2D绘图的方式。于是我打算系统且详细的学习matplotlib,并尽可能地总结各种用法。这个系列就是我我的学习经验总结。
上一篇我介绍了matplotlib中的图片和子图,还有subplot()
和subplots()
两个方法的使用。
这一片主要了解图例
而为了区分各个绘图元素, 在plot时可以,在里面传入label
参数。
ax.plot(x, y1, label='one')
ax.plot(x, y2, label='two')
接着再调用ax.legend()或plt.legend,就会自动生成图例
代码如下:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y1 = [5, 6, 7, 8, 9]
y2 = [0, 1, 2, 3, 4]
fig = plt.figure(dpi=100)
ax = plt.subplot(111)
ax.plot(x, y1, label='one')
ax.plot(x, y2, label='two')
ax.legend(loc='best')
plt.show()
legend方法有多个其他的位置参数loc。参考文档字符串(使用ax.legend?
命令)获取更多信息。
loc参数告诉matplotlib在哪里放置图表。如果你不挑剔,'best’是个一个好选项,它会自动选择最合适的位置,如果取消图例中的元素,不要传入label参数或者传入label='_nolegend_'
1.x轴或y轴的范围
plt.xlim([0, 10])
plt.ylim([0, 10])
如果需要应用到最近创建的坐标系中,你需要改成以下的方式
ax.set_xlim([0, 10])
ax.set_ylim([0, 10])
2.x轴或y轴的刻度
plt.xticks(x, [])
plt.yticks(y, [])
如果需要应用到最近创建的坐标系中,你需要改成以下的方式
ax.set_xticks(x, [])
ax.set_yticks(y, [])
具体例子如下:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y1 = [5, 6, 7, 8, 9]
y2 = [0, 1, 2, 3, 4]
fig = plt.figure(dpi=100)
ax = plt.subplot(111)
ax.set_xticks(x, [2001, 2002, 2003, 2004, 2005])
ax.set_xlim([0, 4])
ax.set_ylim([0, 10])
ax.plot(x, y1, label='one')
ax.plot(x, y2, label='two')
ax.legend(loc='best')
plt.show()
输出图片如下
这里坐标原点是(0, 0)了,在没设置x,y的范围时,(0,0)并不是坐标系原点。
并且x=0的标签被修改成2001了,不如数值并没有被修改。
设置坐标系的标题,代码如下:
ax.set_title('Unnamed')
设置x轴或y轴标题,代码如下:
ax.set_xlabel('year')
ax.set_ylabel('income')
结合上面的代码:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y1 = [5, 6, 7, 8, 9]
y2 = [0, 1, 2, 3, 4]
fig = plt.figure(dpi=100)
ax = plt.subplot(111)
ax.set_xticks(x, [2001, 2002, 2003, 2004, 2005])
ax.set_xlim([0, 4])
ax.set_ylim([0, 10])
ax.set_title('Unnamed')
ax.set_xlabel('year')
ax.set_ylabel('income')
ax.plot(x, y1, label='one')
ax.plot(x, y2, label='two')
ax.legend(loc='best')
plt.show()
效果如下:
补充
1.如果需要设置上边线为x轴,右边线为y轴,
也就是把x轴刻度放在上边线,y轴刻度放在有边线
则需要以下修改:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.subplot(111)
ax.xaxis.set_ticks_position('top')
ax.yaxis.set_ticks_position('right')
plt.show()
2. 如果需要修改刻度的颜色
# color为刻度颜色,colors为刻度标签文本颜色
ax.xaxis.set_tick_params(color='green', colors='red')
坐标系的边线和坐标轴是两个互相独立的个体,举个例子:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.subplot(111)
ax.spines['left'].set_color('red')
plt.show()
ax.spines['bottom'].set_position(('data', 0.2))
效果如下:
下边就被设置在0.2(注意传入参数为元组)上了,依附在上面的刻度也一起移动了。
1.多个图例标签。
2.修改坐标系刻度和标签,和范围
4.设置标题
3.边线