我有一个如下的数据框架
import pandas as pd
import matplotlib.pylab as plt
df = pd.DataFrame({'name':['one', 'two', 'three'], 'assess':[100,200,300]})
我想这样创建errorbar
c = 30
plt.errorbar(df['name'], df['assess'], yerr=c, fmt='o')
当然我得到
ValueError: could not convert string to float
我可以将字符串转换为浮点数,但我失去了值签名,也许有一个更优雅的方式?
Matplotlib确实只能处理数值数据。matplotlib集合中的一个示例展示了如何处理具有分类数据的情况。解决方案是绘制一个范围的值,然后使用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()