一.Matplotlib概述 (一) Matplotlib概述 在Python中数据可视化工具分为免费和收费两种,其中免费的应用性较好的数据可视化工具有Matplotlip、Seaborn、交互式的数据可视化工具Bokeh。其中,Matplotlip是用于创建出版质量图表的绘图工具库,Seaborn是在Matplotlib基础上进行了更高级的API封装,从而使得作图更加容易。
(二)Matplotlib简介 使用Matplotlib实现数据图形化的优势是:
p 使用起来极其简单。
p 以渐进、交互式方式实现数据可视化。
p 表达式和文本使用LaTeX排版。
p 对图像元素控制力更强。
p 可输出PNG、PDF、SVG和EPS等多种格式。
二.创建简单图形 (一)导入快速绘图的函数库 import matplotlib.pyplot as plt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import matplotlib.pyplot as pltimport numpy as npx = range (2 ,25 ,2 ) y = [11 ,13 ,15 ,15 ,16 ,18 ,21 ,25 ,25 ,26 ,22 ,18 ] z = range (2 ,25 ,2 ) plt.figure(figsize=(20 ,8 ),dpi=80 ,facecolor='pink' ,edgecolor='#F00' ) plt.plot(x,y,label='逐小时温度' ,color='red' ,linewidth=3 ) plt.xlabel("hour" ) plt.ylabel("temperature" ) plt.title("hourly weather" ) plt.ylim(-10 ,20 ) plt.show()
(三)创建子图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 x = np.linspace(0 ,10 ,1000 ) y = np.sin(x) z = np.cos(x) k = x plt.subplot(221 ) plt.plot(x,y,label="sin(x)" ,color="red" ,linewidth=2 ) plt.subplot(222 ) plt.plot(x,z,"b--" ,label="cos(x)" ,) plt.subplot(212 ) plt.plot(x,k,"g--" ,label="$line(x)$" ,) plt.show() print (matplotlib.get_configdir())print (matplotlib.matplotlib_fname())print (matplotlib.rc_params())
(四)matplotlibrc配置文件 在Matplotlib中可以使用多个“matplotlibrc”配置文件,它们的搜索顺序:
p 当前路径
p 用户配置路径
p 系统配置路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 matplotlib.rc("lines" ,marker="o" ,linewidth=3 ,linestyle='--' ) my_font= font_manager.FontProperties(fname="fangzheng.ttf" ,size=30 ) plt.title("rc() 案例" ,fontproperties=my_font) plt.plot([1 ,2 ,3 ]) plt.show()
(五)散点图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Emp_data = np.loadtxt('Employedpopulation.csv' ,delimiter="," ,usecols=(1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ),dtype=int ) plt.rcParams['font.sans-serif' ] = ['SimHei' ] plt.rcParams['axes.unicode_minus' ] = False plt.figure(figsize=(6 ,4 )) plt.scatter(Emp_data[0 ],Emp_data[1 ],c='r' ,marker='o' ) plt.scatter(Emp_data[0 ],Emp_data[2 ],c='g' ,marker='x' ) plt.scatter(Emp_data[0 ],Emp_data[3 ],c='b' ,marker='v' ) plt.xlabel('年份' ) plt.ylabel('人员(万人)' ) plt.xlim(2007 ,2016 ) plt.ylim(30000 ,80000 ) plt.title('2007-16年城镇全部就业人员散点图' ) plt.legend({'全部就业' ,'城镇就业' ,'乡村就业' }) plt.savefig('d:/test/emp1.png' ) plt.show()
(六)折线图和柱状图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 Emp_data = np.loadtxt('Employedpopulation.csv' ,delimiter="," ,usecols=(1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ),dtype=int ) plt.rcParams['font.sans-serif' ] = ['SimHei' ] plt.rcParams['axes.unicode_minus' ] = False plt.figure(figsize=(6 ,4 ))
(七)饼图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Emp_data = np.loadtxt('Employedpopulation.csv' ,delimiter="," ,usecols=(1 ),dtype=int ) plt.rcParams['font.sans-serif' ] = ['SimHei' ] plt.rcParams['axes.unicode_minus' ] = False plt.figure(figsize=(6 ,4 )) X = [Emp_data[2 ],Emp_data[3 ]] label = ['城镇就业' ,'乡村就业' ] explode = [0.01 ,0.01 ] plt.pie(X,explode=explode,labels=label,autopct='%1.2f%%' ) plt.legend({'城镇就业' ,'乡村就业' }) plt.show()
(八)箱图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Emp_data = np.loadtxt('Employedpopulation.csv' ,delimiter="," ,usecols=(1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ),dtype=int ) plt.rcParams['font.sans-serif' ] = ['SimHei' ] plt.rcParams['axes.unicode_minus' ] = False plt.figure(figsize=(6 ,4 )) X = [Emp_data[1 ],Emp_data[2 ],Emp_data[3 ]] label = ['全国就业' ,'城镇就业' ,'乡村就业' ] explode = [0.01 ,0.01 ] plt.boxplot(X,notch=True ,labels=label,meanline=True ) plt.legend({'全国就业' ,'城镇就业' ,'乡村就业' }) plt.show()