首先生成一个series数据:
import numpy as np import pandas as pd from pandas import Series import matplotlib.pyplot as plt s1 = Series(np.random.randn(10)).cumsum()
123456 | import numpy as npimport pandas as pdfrom pandas import Seriesimport matplotlib.pyplot as plts1 = Series(np.random.randn(10)).cumsum() |
---|
直接绘制s1的图像:
其中cunsum方法是累加,如图:
kind参数默认为line,表示显示折线图,也可以修改这个参数的值以显示其他类型的图像:
grid参数默认为False,修改其值为True可以在图像中显示格栅:
label参数可以指定图像的图例,title参数可以指定图像的标题。指定label后必须执行plt.legend()才能显示图例:
style可以设置图像线条的风格,虚线、实线、点等:
s1 = Series(np.random.randn(10)).cumsum() s2 = Series(np.random.randn(10)).cumsum() s1.plot(kind='line',label='S1',title='This is demo') s2.plot(label='S2') plt.legend()
123456 | s1 = Series(np.random.randn(10)).cumsum()s2 = Series(np.random.randn(10)).cumsum()s1.plot(kind='line',label='S1',title='This is demo')s2.plot(label='S2')plt.legend() |
---|
fig,ax = plt.subplots(2,1) ax[0].plot(s1) ax[1].plot(s2)
1234 | fig,ax = plt.subplots(2,1)ax[0].plot(s1)ax[1].plot(s2) |
---|
fig,ax = plt.subplots(2,1) s1.plot(ax=ax[0]) s2.plot(ax=ax[1])
1234 | fig,ax = plt.subplots(2,1)s1.plot(ax=ax[0])s2.plot(ax=ax[1]) |
---|
fig,ax = plt.subplots(2,1) s1.plot(ax=ax[0],kind='bar') s2.plot(ax=ax[1])
1234 | fig,ax = plt.subplots(2,1)s1.plot(ax=ax[0],kind='bar')s2.plot(ax=ax[1]) |
---|
dataframe本质是多个series组成的,所以对dataframe绘图其实是对多个series同时绘图
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import Series, DataFrame df = DataFrame(np.random.randint(1,10,40).reshape(10,4),columns=['A','B','C','D']) df.plot()
1234567 | import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom pandas import Series, DataFramedf = DataFrame(np.random.randint(1,10,40).reshape(10,4),columns=['A','B','C','D'])df.plot() |
---|
每一条折线就是一列。
df.iloc[5].plot()
12 | df.iloc[5].plot() |
---|
for i in df.index: df.iloc[i].plot(label=str(i)) plt.legend() plt.show()
12345 | for i in df.index: df.iloc[i].plot(label=str(i))plt.legend()plt.show() |
---|
更简单的方法是先对原始dataframe转置再画图