pandas 知识点补充:绘图plot
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 知识点补充:绘图plot相关的知识,希望对你有一定的参考价值。
1 plot介绍
使用DataFrame的plot方法绘制图像会按照数据的每一列绘制一条曲线,默认按照列columns的名称在适当的位置展示图例,比matplotlib绘制节省时间,且DataFrame格式的数据更规范,方便向量化及计算。
DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False,
sharex=None, sharey=False, layout=None, figsize=None,
use_index=True, title=None, grid=None, legend=True,
style=None, logx=False, logy=False, loglog=False,
xticks=None, yticks=None, xlim=None, ylim=None, rot=None,
fontsize=None, colormap=None, position=0.5, table=False, yerr=None,
xerr=None, stacked=True/False, sort_columns=False,
secondary_y=False, mark_right=True, **kwds)
2 主要参数
kind | 绘图类型 | ‘line’ | 折线图 |
‘bar’ | 条形图。 stacked为True时为堆叠的柱状图 | ||
‘barh’ | 横向条形图 | ||
‘hist’ | 直方图(数值频率分布) | ||
‘box’ | 箱型图 | ||
‘kde’ | Kernel Density Estimation plot 密度图,主要对柱状图添加Kernel 概率密度线 | ||
‘area’ | 与x轴所围区域图(面积图)。 Stacked=True时,每列必须全部为正或负值, stacked=False时,对数据没有要求 | ||
‘pie’ | 饼图。 数值必须为正值,需指定Y轴或者subplots=True | ||
‘scatter’ | 散点图。需指定X轴Y轴 | ||
‘hexbin’ | 蜂巢图。需指定X轴Y轴 | ||
subplots | boolean default False 是否对列分别作子图 | ||
grid | 图片是否有网格 | ||
legend | 子图的图例 (默认为True) | ||
logx | 设置x轴刻度是否取对数 | ||
logy | 设置y轴刻度是否取对数 | ||
loglog | 同时设置x,y轴刻度是否取对数 | ||
xlim&ylim | 设置坐标轴的范围。 数值(最小值)或元组(区间范围) | ||
fontsize | 设置轴刻度的字体大小 | ||
colormap | 设置图的区域颜色 | ||
colorbar | 柱子颜色 | ||
secondary_y | boolean or sequence, default False 设置第二个y轴(右辅助y轴) |
2.1 其他需要注意的地方
2.1.1 设置X、Y轴名称
ax.set_ylabel('yyy')
ax.set_xlabel('xxx')
2.1.2 plt.legend(loc='best')
- loc:图列位置
2.1.3每种绘图类型都有相对应的方法。
比如, df.plot(kind='line')与df.plot.line()等价
2.1.4 画图步骤
1)首先定义画图的画布:fig = plt.figure( )
2)然后定义子图ax ,使用 ax= fig.add_subplot( 行,列,位置标)
3)用 ax.plot( )函数或者 df.plot(ax = ax)
4)结尾加plt.show()
3 画图举例
3.0 直接做图
每一列一条线
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
# ts = ts.cumsum()
df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot()
#每一列一条线
3.1 主副轴
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
#A图用左Y轴标注,B图用右Y轴标注,二者共用一个X轴
df.A.plot()#对A列作图,同理可对行做图
df.B.plot(secondary_y=True, style='g')#设置第二个y轴(右y轴)
3.1.1 主副轴分别设置标签位置
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
ax = df.plot(secondary_y=['A', 'B'])
# 定义column A B使用右Y轴。
ax.set_ylabel('CD scale')
ax.right_ax.set_ylabel('AB scale')
ax.legend(loc='upper left') #设置图例的位置
ax.right_ax.legend(loc='upper right')
#分别设置主副轴的位置和标题
plt.show()
以上是关于pandas 知识点补充:绘图plot的主要内容,如果未能解决你的问题,请参考以下文章