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()
我有如下数据框
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()