Python数据可视化之Matplotlib(折线图)
一、使用Matplotlib生成数据图:是Python上的一个2D绘图库,它可以在跨平台上边出很多高质量的图像。
1、Pycharm安装Matplotlib库
(1)点击菜单上的“file” -> “settings”:
(2)选中你的项目(比如thisyan Project),选中其下的“Project Interpreter”:
(3)点击最右边的"+":
(4)出现如下界面后,按照如图所示单击:
(5)完成:
2、折线图 -------- plot
(1)简单的折线图:
import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.plot(x_data,y_data)
plt.show()
在matplotlib面向对象的绘图库中,pyplot是一个方便的接口。
plot()函数:支持创建单条折线的折线图,也支持创建包含多条折线的复式折线图----只要在调用plot()时传入多个分别代表X轴和Y轴数据的list列表即可
(2)复式折线图:
import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,54200,51500,58300,56800,59500,62700]
plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
plt.show()
注:
color ------ 指定折线的颜色
linewidth -------- 指定折线的宽度
linestyle -------- 指定折线的样式
‘ - ’ : 表示实线
’ - - ‘ :表示虚线
’ : ‘:表示点线
’ - . ‘ :表示短线、点相间的虚线
(3)管理图例:
对于复式折线图,应该为每条折线添加图例,可以通过legend()函数来实现。该函数可传入两个list参数,其中第一个list参数(handles参数)用于引用折线图上的每条折线;第二个list参数(labels)代表为每条折线所添加的图例
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm #字体管理器
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,54200,51500,58300,56800,59500,62700]
ln1, = plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
ln2, = plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
my_font = fm.FontProperties(fname="/usr/share/fonts/wqy-microhei/wqy-microhei.ttc")
plt.title("电子产品销售量",fontproperties=my_font) #设置标题及字体
plt.legend(handles=[ln1,ln2],labels=['鼠标的年销量','键盘的年销量'],prop=my_font)
ax = plt.gca()
ax.spines['right'].set_color('none') # right边框属性设置为none 不显示
ax.spines['top'].set_color('none') # top边框属性设置为none 不显示
plt.show()
(4)管理多个子图:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.font_manager as fm #字体管理器
my_font = fm.FontProperties(fname="/usr/share/fonts/wqy-microhei/wqy-microhei.ttc")
plt.figure()
x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)
gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列
ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行
ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)
ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3)
#绘制正弦曲线
ax1.plot(x_data,np.sin(x_data))
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
ax1.set_title('正弦曲线',fontproperties=my_font)
#绘制余弦曲线
ax2.plot(x_data,np.cos(x_data))
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.spines['bottom'].set_position(('data',0))
ax2.spines['left'].set_position(('data',0))
ax2.set_title('余弦曲线',fontproperties=my_font)
#绘制正切曲线
ax3.plot(x_data,np.tan(x_data))
ax3.spines['right'].set_color('none')
ax3.spines['top'].set_color('none')
ax3.spines['bottom'].set_position(('data',0))
ax3.spines['left'].set_position(('data',0))
ax3.set_title('正切曲线',fontproperties=my_font)
plt.show()