本文介绍matplotlib的一些基本设置和直方图、条形图、折线图、饼图及散点图的绘制。
首先配置一个简单的图形:
import matplotlib
import matplotlib.pyplot as plt #导入其绘图库
x=[1,2] #x轴
y=[-3,4] #y轴
plt.bar(x,y) #bar是柱状图的意思
plt.show()
输出结果:
要进行后续工作,先了解一些基本配置:
#中文支持
plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
#正常显示负号
plt.rcParams[‘axes.unicode_minus’] = False
#修改线条样式
plt.rcParams[‘lines.linewidth’]=5 #线条宽
plt.rcParams[‘lines.color’]=‘red’ #线条颜色
plt.rcParams[‘lines.linestyle’]=‘–’ #线条样式
下面加入中文标题,编译器报错或是加入负值不显示:
import matplotlib
import matplotlib.pyplot as plt #导入其绘图库
x=[1,2] #x轴
y=[-3,4] #y轴
plt.title('中文标题')
plt.bar(x,y) #bar是柱状图的意思
plt.show()
解决方案:
加入
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] #中文支持
plt.rcParams[‘axes.unicode_minus’] = False #正常显示负号
注:在后续编程中,可直接将此语句进行配置,以免造成后续错误
import matplotlib
import matplotlib.pyplot as plt #导入其绘图库
x=[1,2] #x轴
y=[-3,4] #y轴
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title('中文标题')
plt.bar(x,y) #bar是柱状图的意思
plt.show()
输出结果:
下面进行修改线条样式的测试(以折线图为例):
import matplotlib
import matplotlib.pyplot as plt #导入其绘图库
x=[1,2] #x轴
y=[-3,4] #y轴
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['lines.linewidth']=10
plt.rcParams['lines.linestyle']='--'
plt.title('中文标题')
plt.plot(x,y) #plot是折线图的意思
plt.show()
输出结果:
下面进行直方图的绘制:
import matplotlib as mpl
import matplotlib.pyplot as plt
height=[168,155,182,170,173,161,155,173,176,181,166,172,170]
bins=range(150,190,5)#区间划分 150、190是边界,5是步长
plt.hist(height,bins=bins)#hist是直方图的意思
plt.show()
直方图的绘制只需要两个参数,一个是数据,一个是区间,只要给定好数据和区间,就可以进行统计。
输出结果:
下面进行条形图的绘制:
import matplotlib as mpl
import matplotlib.pyplot as plt
classes=['class 1','class 2','class 3']
scores=[70,80,60]
plt.bar(classes,scores)
plt.show()
条形图常用于将同类数据进行对比,更直观的显示数据关系。
输出结果:
下面进行折线图的绘制:
import matplotlib as mpl
import matplotlib.pyplot as plt
year=range(2001,2017) #右边是开集合,也就是说可以从2001年取到2016年
height=[157,160,162,163,167,170,173,175,174,179,182,182,182,182,182,183]
plt.plot(year,height) #此为绘制折线图
plt.show()
折线图一般为了体现数据的变化率
输出结果:
下面进行饼图的绘制:
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
labels=['饮食','出行','教育']
data=[2000,3600,6000]
plt.pie(data,labels=labels,autopct='%1.1f%%')#此为绘制饼图
#加入autopct参数才可显示百分比,%1.1f是保留一位小数,后边的%%一个是转义字符,一个是百分号
plt.show()
注:若要显示百分数,要加入autopct参数
输出结果:
下面进行散点图的绘制:
import matplotlib as mpl
import matplotlib.pyplot as plt
data = [[18.9,10.4],[21.3,8.7],[19.5,11.6],[20.5,9.7],[19.9,9.4],[22.3,11],[21.4,10.6],[9,9.4],[10.4,9],[9.3,11.3],[11.6,8.5],[11.8,10.4],[10.3,10],[8.7,9.5],[14.3,17.2],[14.1,15.5],[14,16.5],[16.5,17.7],[15.1,17.3],[16.4,15],[15.7,18]]
#提取X和Y
X=[item[0] for item in data]
Y=[item[1] for item in data]
print(X,Y)
plt.scatter(X,Y) #此为绘制散点图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('超市商品价位与销量散点图') #添加标题
plt.xlabel('价格(元)') #添加横坐标标题
plt.ylabel('销量(件)') #添加纵坐标标题
plt.text(16,16,'牙膏') #在坐标点插入文字
plt.text(10,11,'纸巾')
plt.text(20,10,'洗衣液')
plt.show()
散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。
输出结果:
欢迎大家查看作者的主页,主页中还有关于编程与算法方面的更多内容,欢迎大家相互沟通学习~