Pandas绘制多alpha值柱状图遇TypeError,如何解决?
为不同时间序列柱状图设置独立透明度的问题
我尝试给不同时间序列的柱状图设置不同的alpha透明度值,原本以为给alpha传列表就能实现(之前见过类似用法),但运行代码时报错了。
我的代码
plt.figure() df.plot(kind="bar", alpha=[.5,1])
错误信息
TypeError: alpha must be numeric or None, not <class 'list'>
问题原因
pandas 的 DataFrame.plot(kind='bar') 方法里,alpha 参数只接受单个数值或 None,不支持传入列表来给不同序列设置不同透明度。这个参数是用来统一控制所有柱状图元素的透明度的,没法直接按序列区分。
解决方法
如果要给每个时间序列(也就是DataFrame的每一列)设置不同的透明度,需要手动遍历每一列单独绘制:
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 定义每个序列对应的透明度 alpha_values = [0.5, 1] # 遍历列和对应的透明度 for col, alpha in zip(df.columns, alpha_values): df[col].plot(kind='bar', alpha=alpha, ax=ax, label=col) ax.legend() plt.show()
如果是分组柱状图(默认的多序列柱状图样式),上面的代码会自动处理分组位置;如果需要堆叠柱状图,只需要在plot里加上stacked=True参数即可。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

