用垂直线绘制pandas数据框

1 投票
1 回答
2986 浏览
提问于 2025-04-18 11:08

我想要绘制一个数据框(dataframe),其中每个数据点不是用一个点来表示,而是从零轴向上或向下延伸的竖线,像这样:

df['A'].plot(style='xxx')

这里的xxx是我需要的样式。

另外,我希望能够根据数据框中另一列的值来给每根竖线上色。

我还要说明的是,我的x轴的值是数字,并且这些数字之间的间隔不相等。

1 个回答

1

pandas的绘图工具其实是对matplotlib的一个简单封装,使用起来很方便。不过,我不知道有没有办法直接通过pandas实现你想要的功能。

你可以用几行matplotlib的代码来实现。大部分代码都是用来处理颜色映射的:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as colors
import matplotlib.cm as cmx

#make the dataframe
a = np.random.rand(100)    
b = np.random.ranf(100)    
df = pd.DataFrame({'a': a, 'b': b})

# do the colour mapping
c_norm  = colors.Normalize(vmin=min(df.b), vmax=max(df.b))
scalar_map = cmx.ScalarMappable(norm=c_norm, cmap=plt.get_cmap('jet'))    
color_vals = [scalar_map.to_rgba(val) for val in df.b]

# make the plot
plt.vlines(df.index, np.zeros_like(df.a), df.a, colors=color_vals)

我在这里用的是DataFrame的索引作为x轴的值,但其实你也可以使用不规则间隔的x值。

撰写回答