一,matplotlib.pyplot绘图相关的对象:
1.容器类:图(figure),坐标系(axes),坐标轴(axis),刻度(tick)
2.基础类:线(line),点(marker),文本(text),图例(legend,)网格(grid),标题(title)
二,绘图的类型:
1.线形图:plot()
2.直方图:hist()
3.条形图:bar()
4.饼图:pie()
5.散点图:scatter()
6.3d图:from mpl_toolkits.mplt3d importAxes3D
7.动态交互图:pyecharts(属第三方库需要安装)
1.线形图:plot()
In [4]:
pip show matplotlib
Name: matplotlib Version: 3.3.4 Summary: Python plotting package Home-page: https://matplotlib.org Author: John D. Hunter, Michael Droettboom Author-email: matplotlib-users@python.org License: PSF Location: c:\users\tx\anaconda3\lib\site-packages Requires: numpy, kiwisolver, pyparsing, python-dateutil, pillow, cycler Required-by: wordcloud, seaborn, scikit-image Note: you may need to restart the kernel to use updated packages.
In [17]:
import matplotlib.pyplot as plt plt.plot([2,10,12,4,2],[2,2,6,6,2]) plt.rcParams['font.family'] = 'STSong' #输出中文格式 plt.title('23楼宇2班成绩',fontsize = 20) plt.xlabel('student_number',fontsize = 15) #x轴标签 plt.ylabel('grade',fontsize = 15) #y轴标签 plt.axis([0,15,1,10]) #设置坐标系的x,y的取值范围,前两位表示x,后两位表示y轴 plt.savefig('../R&Q_pic/testl.jpg',dpi = 600) #将生成的图表保存到指定的位置,dip表示图表的分辨率 plt.show() #显示图表
(1)同一绘图区域绘制多图
In [25]:
import matplotlib.pyplot as plt import numpy as np #导入科学计算库 plt.rcParams['font.family'] = 'kaiti' x = np.arange(10) #创建一个0-9的整数序列,并将其赋给x坐标 plt.plot(x,x*x,'ro-',label = 'a') #label的图例的标签 plt.plot(x,1.5*x,'g*-',label = 'b') plt.plot(x,4*x,'bo-',label = 'c') plt.plot(x,x**1.5,'mo-',label = 'd') plt.legend() plt.savefig('../R&Q_pic/test2.jpg',dpi = 600) #将生成的图表保存到指定的位置,dip表示图表的分辨率 plt.show() #显示图表
(2)多区域绘图
In [31]:
import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t)*np.cos(2*np.pi*t) a=np.arange(0,5,0.02) plt.subplot(322) plt.plot(a,f(a)) plt.subplot(323) plt.plot(a,np.cos(2*np.pi*a),'-.',color='r') plt.subplot(324) plt.plot(a,np.sin(2*np.pi*a),'--',color='g') plt.subplot(325) plt.plot(a,np.tan(2*np.pi*a),':',color='m') plt.savefig('../R&Q_pic/test3.jpg',dpi = 600) #将生成的图表保存到指定的位置,dip表示图表的分辨率 plt.show() #显示图
C:\Users\tx\anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:238: RuntimeWarning: Glyph 8722 missing from current font. font.set_text(s, 0.0, flags=flags) C:\Users\tx\anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:201: RuntimeWarning: Glyph 8722 missing from current font. font.set_text(s, 0, flags=flags)
(3)综合案例
In [35]:
import matplotlib.pyplot as plt plt.figure(num = '气温趋势',figsize = (6,4)) x = ["周一","周二","周三","周四","周五","周六","周日"] y_1 = [20,15,18,16,21,14,10] y_2 = [12,8,14,10,13,9,4] plt.title("一周变化趋势") plt.xlabel("星期",fontsize = 10) plt.ylabel("气温",fontsize = 10) plt.xticks(fontsize = 10) plt.yticks(fontsize = 10) plt.plot(x,y_1,"rs--",label="最高气温",marker = 'o') plt.plot(x,y_2,"bo:",label="最低气温") plt.legend(fontsize = 10) plt.grid(True) plt.savefig('../R&Q_pic/test4.jpg',dpi = 600) #将生成的图表保存到指定的位置,dip表示图表的分辨率 plt.show() #显示图
2,直方图:hist()
In [39]:
import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family'] = 'STSong' datas_1 = 10 + np.random.randn(1000) datas_2 = 12 + np.random.randn(1000) plt.hist(datas_1, bins=30,alpha = 0.4) plt.hist(datas_2, bins=30,alpha = 0.5) plt.legend(['以10为中心的正态分布','以12为中心的正态分布'],\ fontsize = 8,loc = 'upper left') plt.title('直方图') plt.xlabel('区间',fontsize = 10) plt.ylabel('频数',fontsize = 10) plt.savefig('../R&Q_pic/test5.jpg',dpi = 600) plt.show()
3,条形图:bar()
In [47]:
import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'STSong' years = ["2014","2015","2016","2017","2018","2019"] baokao_nums = [172,164.9,177,201,238,290] luqu_nums = [54.87,57.06,58.98,72.22,76.25,79.3] x = range(len(years)) plt.bar(x,baokao_nums,width = 0.4,color = '#0055cc') plt.bar([i+0.4 for i in x],luqu_nums,width=0.4,alpha=0.8,color='pink') plt.xticks([i+0.2 for i in x],years) plt.legend(['研究生报考人数','研究生录取人数'],fontsize = 10) plt.ylabel("人数/万人") plt.xlabel("年份") plt.title("研究生历年报考和录取情况",fontsize = 16) plt.savefig('../R&Q_pic/test6.jpg',dpi = 600) plt.show()
In [ ]:
l