plt.errorbar 为 X 字符串值

plt.errorbar for X string value

我有如下数据框

import pandas as pd
import matplotlib.pylab as plt
df = pd.DataFrame({'name':['one', 'two', 'three'], 'assess':[100,200,300]})

我想像这样构建错误栏

c = 30
plt.errorbar(df['name'], df['assess'], yerr=c, fmt='o')

当然我得到

ValueError: could not convert string to float

我可以将字符串转换为浮点数,但我丢失了值签名,也许有更优雅的方法?

Matplotlib 确实只能处理数值数据。 example in the matplotlib collection 展示了如何处理您拥有分类数据的情况。解决方案是绘制一系列值,然后使用 plt.xticks(ticks, labels)ax.set_xticks(ticks)ax.set_xticklabels(labels) 的组合设置标签。

在你的情况下,前者工作正常:

import pandas as pd
import matplotlib.pylab as plt
df = pd.DataFrame({'name':['one', 'two', 'three'], 'assess':[100,200,300]})

c = 30
plt.errorbar(range(len(df['name'])), df['assess'], yerr=c, fmt='o')
plt.xticks(range(len(df['name'])), df['name'])

plt.show()