python数据可视化--pandas和matplotlib绘图

【标注】上学期对于这部分知识点总是分不清,假期重新整理一遍,希望整理完自己可以更清晰一点。如果有错误或不清晰的地方,还请读者指出

pandas绘图和matplotlib绘图的区别

pandas和matplotlib都有绘图功能,二者通常一起使用,但是二者还是存在一些细微差别:pandas是运用Dataframe.plot()方法实现快速绘图,只能实现一些基础参数的设置;matlab用自带的pyplot进行绘图(plt.plot()),里有比pandas更精细的一些绘图操作,比如添加标注、包含多子图等。二者并不一定要一起使用。

接下来我从pandas快速绘图、matpltlib精细绘图、常见图形的绘制三个方面来进行讲述:

1.pandas快速绘图

引入pandas库以后,基本的绘图流程如下:

y=[1,2,3] #y轴数据
data = DataFrame({'title': y}, index=['a','b','c']) #数据准备
data.plot()  #绘图
plt.show()  #展示

【附图】基本参数

 

若要进行基本参数如画笔颜色的设置,可以直接在data.plot()的括号里进行添加,如:

data.plot(title='2012-2020年人均可支配收入', linewidth=2, marker='s', linestyle=':', color='k', 
           grid=True, alpha=0.9, use_index=True, yticks=[0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5])

【例】绘制2010-2020年我国GDP折线图

from pandas import DataFrame

gdp = [41.3,48.9,54.0,59.5,64.4,68.9,74.4,82.1,90.0,99.1,101.6]
data = DataFrame({'GDP: Trillion':gdp},index=['2010','2011','2012', 
            '2013','2014','2015','2016','2017','2018','2019', '2020']) 

data.plot()

运行结果如下图:

 

2.matplotlib精细绘图

上面pandas绘图的基本参数表依旧适用于matplotlib,除此之外,matlab还有一些精细图元

【附图】matlab精细图元:

引入matlab库:

import pandas as pd
import matplotlib.pyplot as plt

由于精细绘图开始运用中文注释,这里插入一下设置中文显示的语句(设置中文显示的方法有很多,读者可自行检索),放在刚引入的库后面就可以:

plt.rcParams['font.sans-serif']=['SimHei']#设置使中文显示,‘SimHei’是我选择的一种字体

引入好库,设置好中文显示后,基本的绘图流程如下:

plt.figure() #设置绘图对象
y=[1,2,3] #准备绘图的序列数据
plt.plot(y) #绘图,此处自动生成横坐标
figure.savafig('filename', dpi, bbox, inches) #保存图表

若要设置参数,可使用plt.plot()方法,也可以使用plt.函数名()方法,以下为示范:

plt.plot(GDPdata,color="red",linewidth=2,linestyle='dashed',marker='o',label='GDP')    #绘图
plt.legend(loc='lower right')      #在右上角显示图例说明
plt.grid()       #显示网格线

【例】(续): 绘制2010-2020年我国GDP折线图

import matplotlib.pyplot as plt   #导入绘图库
plt.figure()   #创建绘图对象  
GDPdata=[41.3,48.9,54.0,59.5,64.4,68.9,74.4,82.1,90.0,98.7,101.6] #准备绘图的序列数据
plt.plot(GDPdata,color="red",linewidth=2,linestyle='dashed',marker='o',label='GDP')    #绘图
#精细设置图元
plt.title('2010~2020 GDP: Trillion')
plt.xlim(0,10)         #x轴绘图范围
plt.ylim(35,105)     	#y轴绘图范围
plt.xticks(range(0,10),('2010','2011','2012','2013','2014','2015',      
                           '2016','2017','2018','2019','2020')) #将x轴刻度映射为字符串
plt.legend(loc='upper right')      #在右上角显示图例说明
plt.grid()       #显示网格线
plt.show()       #显示并关闭绘图

运行结果如下图:

 

a. matplotlib多子图绘图

简略介绍一下大概流程:

fig = plt.figure(figsize=(6,6))  #创建一个6行6列的窗格
data = [1,2,3]
ax1=fig.add_subplot(2,1,1) 
#figure.add_subplot(numRows, numCols, plotNum),设定子图1的位置,2行1列的1
ax1.plot(data...) #绘制子图1
data.plot(kind='box'...)  #绘制子图1的另一种方法

【例】多子图绘制

import matplotlib.pyplot as plt
from pandas import Series
data=Series([41.3,48.9,54.0,59.5,64.4,68.9,74.4,82.1,90.0, 
98.7,101.6], index=['2010','2011','2012','2013','2014',
'2015','2016','2017','2018','2019','2020']) 
fig=plt.figure(figsize=(8,6)) #figsize定义图形大小
ax1=fig.add_subplot(2,1,1)   #创建子图1 
ax1.plot(data)               #用AxesSubplot绘制折线图
ax2=fig.add_subplot(2,2,3)   #创建子图2 
data.plot(kind='bar',use_index=True,fontsize='small',ax=ax2)#用andas绘柱状图
ax3=fig.add_subplot(2,2,4)   #创建子图3 
data.plot(kind='box',fontsize='small',xticks=[],ax=ax3) #用pandas绘柱状图

#将绘制图形保存到文件
plt.savefig('2010-2020GDP.jpg',dpi=400,bbox_inches='tight')
plt.show()  #注意保存文件需在显示之前

运行结果如下图:

 

3.常见图形的绘制

绘制语句有两种,方法1:

Series.plot(kind,...)

括号里省略号指代不同图形特有的参数设置和所有图形使用的基本参数设置语句,例如直方图的bins,饼图的explode参数等。

方法2:

plt.scatter(x,y,...)

plt后加图形的kind即可

【注】本人能力有限,并不清楚是否所有图形都使适用这两种方法。

这些常见图形绘制的思路基本都一样,所以此处我直接复制粘贴我的笔记:

 

【写在最后】第一次发表CSDN,以后应该也会继续尝试,希望自己可以写出越来越严谨完整的文章,如果这这篇文章有帮助到你,可以鼓励我一下吗~感谢阅读!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值