matplotlib版本:3.7.5
numpy版本:1.24.3
pandas版本:2.0.3
本文主要记录matplotlib对pandas的绘图,matplotlib的绘图技巧参考这里matplotlib基本绘图。
导包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
matplotlib对Series的绘图
s1 = pd.Series(np.random.randn(100))
s1 = s1.cumsum() # 累加,返回Series
# pd.Series([1, 2, 3]).cumsum()
# 0 1
# 1 3
# 2 6
# dtype: int64
折线图
s1.plot(kind="line", grid=True, label="s1", title="demo", style="--")
plt.legend()
在一个图里画两个Series
s1 = pd.Series(np.random.randn(100)).cumsum()
s2 = pd.Series(np.random.randn(100)).cumsum()
s1.plot(kind="line", grid=True, label="s1", title="demo")
s2.plot(kind="line", grid=True, label="s2")
使用子图的方式将2个Series画在一起
# 定义子图布局两行一列
fig, ax = plt.subplots(2, 1)
ax[0].plot(s1, label="s1", color="red")
ax[1].plot(s2)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7345d2ba22024f839f468d5cfe1aaf78.png)
matplotlib对DataFrame进行绘图
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 10, 40).reshape(10, 4), columns=list("ABCD"))
df_t = df.T # 行列转置
df_t
水平柱状图
# 水平柱状图,按行取每一列的数据进行绘图
df.plot(kind="barh") # horizontal bar chart
柱状图
# 不显示图例,将每一行所有的列数据画在一起
# colormap="winter"设置冬季风格
df.plot(kind="bar", colormap="winter", legend=False)
堆叠柱状图
# 堆叠柱状图
df.plot(kind="bar", stacked=True) # stacked bar chart
对某一列画图
# 对A列进行画图
df["A"].plot()
直方图
s1 = pd.Series(np.random.randn(1000))
# rwidth 每个柱子之间的宽度
# bins 柱子的个数
plt.hist(s1, rwidth=0.9, bins=20)
密度图
s1.plot(kind="kde")