原标题:干货:使用pandas和seaborn制作炫酷图表(附代码)
我们介绍过用matplotlib制作图表的一些tips,感兴趣的同学可以戳→纯干货:手把手教你用Python做数据可视化(附代码)。matplotlib是一个相当底层的工具。你可以从其基本组件中组装一个图表:数据显示(即绘图的类型:线、条、框、散点图、轮廓等)、图例、标题、刻度标记和其他注释。
在pandas中,我们可能有多个数据列,并且带有行和列的标签。pandas自身有很多内建方法可以简化从DataFrame和Series对象生成可视化的过程。另一个是seaborn,它是由Michael Waskom创建的统计图形库。seaborn简化了很多常用可视化类型的生成。
导入seaborn会修改默认的matplotlib配色方案和绘图样式,这会提高图表的可读性和美观性。即使你不适用seaborn的API,你可能更喜欢导入seaborn来为通用matplotlib图表提供更好的视觉美观度。
01 折线图
Series和DataFrame都有一个plot属性,用于绘制基本的图型。默认情况下,plot()绘制的是折线图(见图9-13):
In [60]: s =pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
In [61]: s.plot()
▲图9-13 简单序列图形
Series对象的索引传入matplotlib作为绘图的x轴,你可以通过传入use_index=False来禁用这个功能。x轴的刻度和范围可以通过xticks和xlim选项进行调整,相应地y轴使用yticks和ylim进行调整。表9-3是plot的全部选项列表。本节我会介绍这些选项中的一些,其余你可以自行探索。
大部分pandas的绘图方法,接收可选的ax参数,该参数可以是一个matplotlib子图对象。这使你可以更为灵活的在网格布局中放置子图。
DataFrame的plot方法在同一个子图中将每一列绘制为不同的折线,并自动生成图例(见图9-14):
In [62]: df =pd.DataFrame(np.random.randn(10, 4).cumsum(0),
....: columns=['A', 'B', 'C', 'D'],
....: index=np.arange(0, 100, 10))
In [63]: df.plot()
▲图9-14 简单DataFrame绘图
plot属性包含了不同绘图类型的方法族。例如,df.plot( )等价于df.plot.line( )。我们之后将会探索这些方法中的一部分。
要绘制的其他关键字参数会传递到相应的matplotlib绘图函数,因此你可以通过了解更多的matplotlib的 API信息来进一步定制这些图表。
参数
描述
label
图例标签
ax
绘图所用的matplotlib子图对象;如果没传值,则使用当前活动的matplotlib子图
style
传给matplotlib的样式字符串,比如'ko--'
alpha
图片不透明度(从0到1)
kind
可以是'area'、'bar'、'barh'、'density'、'hist'、'kde'、'line'、'pie'
logy
在y轴上使用对数缩放
use_index
使用对象索引刻度标签
rot
刻度标签的旋转(0到360)
xticks
用于x轴刻度的值
yticks
用于y轴
xlim
x轴范围(例如[0,10])
ylim
y轴范围
grid
展示轴网格(默认是打开的)
▲表9-3 Series.plot方法参数
DataFrame拥有多