0

我有一个如下的数据框

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

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

4

1 回答 1

4

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()
于 2016-11-15T18:37:08.300 回答