Matplotlib主要用于python分析可视化展示,对于日常的分析中主要用到饼图、折线图、直方图基本能满足一般的分析可视化呈现。

        今天我们就来介绍一下必备的Matplotlib可视化关键的几点,只要了解了这几点就够了。

1、可视化直方图举例

import matplotlib.pyplot as pltplt.rcParams['font.family']='Arial Unicode MS' #中文显示plt.plot([3,1,4,5,2]) #基础数据实现折线图plt.ylabel('纵轴(值)') #y轴文字标签plt.savefig('test',dpi=600) #保存图片plt.show() #可视化图形展示

Python中的Matplotlib可视化编程整体结构主要有以下几部分组成:

(1)导入Matplotlib库来进行

(2)为了图表可视化中文显示必备代码

(3)可视化核心代码,依据不同的图形使用不同函数如直方图:plt.plot()

(4)图表的各种美化参数设置(横纵坐标参数设置,图表标题等)

(5)图片保存

(6)输出展示

2、可视化结构常用设置

(1)Matplotlib库

Matplotlib库是由各种可视化的类沟通,内部结构复杂,我们不用太关注,更多的关注它的使用就可以了。

(2)中文可视化呈现设置

pyplot并不默认支持中文显示,需要rcParams修改字体来实现

plt.rcParams['font.family']='Arial Unicode MS' #中文显示

一般网上有很多的细节格式如字体风格和字体大小,这里我们避免需要学习的点太多,不做过多介绍。

(3)可视化不同图形函数

常用:

plt.plot(x,y,fmt,…) 绘制一个折线图

plt.boxplot(data,notch,position) 绘制一个箱形图

plt.bar(left,height,width,bottom) 绘制一个条形图

plt.barh(width,bottom,left,height) 绘制一个横向条形图

plt.polar(theta, r) 绘制极坐标图

plt.pie(data, explode) 绘制饼图

plt.scatter(x,y) 绘制散点图,其中,x和y长度相同

plt.hist(x,bins,normed) 绘制直方图

plt.contour(X,Y,Z,N) 绘制等值图

plt.vlines() 绘制垂直图

不常用:

plt.stem(x,y,linefmt,markerfmt) 绘制柴火图

plt.plot_date() 绘制数据日期

plt.step(x,y,where) 绘制步阶图

plt.psd(x,NFFT=256,pad_to,Fs) 绘制功率谱密度图 plt.specgram(x,NFFT=256,pad_to,F) 绘制谱图

plt.cohere(x,y,NFFT=256,Fs) 绘制X‐Y的相关性函数
(4)图形完善设置

plt.xlabel() 对X轴增加横轴标签

plt.ylabel() 对Y轴增加纵轴标签

plt.title() 对图形整体增加标题标签

plt.text() 在任意位置增加文本

plt.annotate() 在图形中增加带箭头的注解

补充一些内部参数设置:

颜色:

python 直方图横坐标隐藏 python中直方图的绘制与保存_matplotlib保存图片

风格:

python 直方图横坐标隐藏 python中直方图的绘制与保存_饼图_02

标记:

python 直方图横坐标隐藏 python中直方图的绘制与保存_饼图_03

(5)图片保存和展示

plt.savefig(path+'test',dpi=600) #保存图片
plt.show() #可视化图形展示

3、饼图、直方图、条形图举例

饼图:

# 设置中文字体和符号正常显示matplotlib.rcParams['font.family']=' Arial Unicode MS 'matplotlib.rcParams['axes.unicode_minus']=Falsematplotlib.rcParams['font.size']=13"""绘制饼图explode:设置各部分突出labels:设置各部分标签labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径autopct:设置圆里面文本shadow:设置是否有阴影startangle:起始角度,默认从0开始逆时针转pctdistance:设置圆内文本距圆心距离"""labels = ['衣','食','住','行']sizes = [14.55,30.45,45,10]colors = ['red','yellow','lightskyblue','green']explode = (0,0.1,0,0)# 设置图片大小plt.figure(figsize=(7,4),dpi=80)# 绘制饼状图图plt.pie(sizes,labels=labels,colors=colors,explode=explode,labeldistance = 1.1,pctdistance = 0.6,autopct='%.2f%%',shadow=False,startangle=90)plt.axis('equal') #使饼状图的xy轴长度相等plt.legend(loc='best')plt.savefig('饼状图')plt.show()

图形输出如下:

python 直方图横坐标隐藏 python中直方图的绘制与保存_ico_04

直方图:

np.random.seed(0)mu,sigma = 100,20data = np.random.normal(mu,sigma,size=100)"""绘制直方图data:必选参数,绘图数据bins:直方图的长条形数目,可选项,默认为10normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。facecolor:长条形的颜色edgecolor:长条形边框的颜色alpha:透明度histtype:直方图类型:'bar', 'barstacked','step', 'stepfilled'"""plt.hist(data,bins=20,normed=0,histtype='bar',facecolor='g',edgecolor="black",alpha=0.6)# 显示横轴标签plt.xlabel("区间",fontproperties='SimHei',fontsize=12)# 显示纵轴标签plt.ylabel("频数/频率",fontproperties='SimHei',fontsize=12)# 显示图标题plt.title('频数/频率分布直方图',fontproperties='SimHei')plt.savefig('直方图')plt.show()

输出结果如下:

python 直方图横坐标隐藏 python中直方图的绘制与保存_饼图_05

条形图:

matplotlib.rcParams['font.family']=’ Arial Unicode MS ‘matplotlib.rcParams['axes.unicode_minus']=Falselabel_list=['2015','2016','2017','2018'] #横坐标刻度显示值num_list1=[20,30,15,35] # 纵轴坐标值1num_list2=[15,30,40,20] #纵轴坐标值2x = range(len(num_list1))"""绘制条形图x:长条形中点横坐标height:长条形高度width:长条形宽度,默认值0.8label:为后面设置legend准备"""plt.figure(figsize=(8,5),dpi=80)rects1 = plt.bar(x,height=num_list1,width=0.4,alpha=0.7,color='red',label='测量部')rects2 = plt.bar([i+0.4 for i in x],height=num_list2,width=0.4,alpha=0.7,color='blue',label='人事部')plt.ylim(0,50)plt.ylabel('人数')"""设置x轴刻度显示值参数一:中点坐标参数二:显示值"""plt.xticks([index+0.2 for index in x],label_list)plt.xlabel('年份')plt.title('某测绘公司')#编辑文本for rect in rects1:height = rect.get_height()plt.text(rect.get_x()+rect.get_width()/2,height+1,str(height),ha='center',va='bottom')for rect in rects2:height = rect.get_height()plt.text(rect.get_x()+rect.get_width()/2,height+1,str(height),ha='center',va='bottom')plt.legend()plt.savefig('条形图')plt.show()

图形输出如下:

python 直方图横坐标隐藏 python中直方图的绘制与保存_matplotlib保存图片_06

以上就是Matplotlib可视化的基础,只要熟悉以上方法和基本代码,基本满足常用分析,如果图形需要有所替换,只要替换不同的图形函数就可以了,基本的思路是一致的。

如对更高级的图形可视化有了解需求,欢迎随时提出,我将在后续给大家汇总最全的图形可视化基础使用教程。