Python Pandas 未绘制错误栏以及如何自定义索引
Python Pandas error bars are not plotted and how to customize the index
我需要你的帮助来使用 Python 中的 Pandas 绘制误差线。我已阅读 Pandas 文档,并进行了一些试验和错误,但没有得到令人满意的结果。
这是我的代码:
'''
usage : (python) rc-joint-plot-error-bar.py
'''
from __future__ import print_function
import pandas as pd
import matplotlib.pyplot as plt
filename = 'rc-plot-error-bar.csv'
df = pd.read_csv(filename, low_memory = False)
headers = ['Specimen', 'CA_Native_Mean', 'CA_Implant_Mean', 'CP_Native_Mean',
'CP_Implant_Mean', 'CA_Native_Error', 'CA_Implant_Error', 'CP_Native_Error',
'CP_Implant_Error']
for header in headers :
df[header] = pd.to_numeric(df[header], errors = 'coerce')
CA_means = df[['CA_Native_Mean','CA_Implant_Mean']]
CA_errors = df[['CA_Native_Error','CA_Implant_Error']]
CP_means = df[['CP_Native_Mean', 'CP_Implant_Mean']]
CP_errors = df[['CP_Native_Error', 'CP_Implant_Error']]
CA_means.plot.bar(yerr=CA_errors)
CP_means.plot.bar(yerr=CP_errors)
plt.show()
这是我的数据框的样子:
Specimen CA_Native_Mean CA_Implant_Mean CP_Native_Mean CP_Implant_Mean \
0 1 1 0.738366 1 1.087530
1 2 1 0.750548 1 1.208398
2 3 1 0.700343 1 1.394535
3 4 1 0.912814 1 1.324024
4 5 1 1.782425 1 1.296495
5 6 1 0.415147 1 0.479259
6 7 1 0.934014 1 1.084714
7 8 1 0.526591 1 0.873022
8 9 1 1.409730 1 2.051518
9 10 1 1.745822 1 2.134407
CA_Native_Error CA_Implant_Error CP_Native_Error CP_Implant_Error
0 0 0.096543 0 0.283576
1 0 0.076927 0 0.281199
2 0 0.362881 0 0.481450
3 0 0.400091 0 0.512375
4 0 2.732206 0 1.240796
5 0 0.169731 0 0.130892
6 0 0.355951 0 0.272396
7 0 0.258266 0 0.396502
8 0 0.360461 0 0.451923
9 0 0.667345 0 0.404856
如果我运行代码,我得到如下数字:
我的问题是:
- 你能告诉我如何让误差线出现在数字中吗?
- 如何将索引(x 轴的值)从 0-9 更改为 1-10?
非常感谢!
此致,
阿诺德 A.
快完成了!
为了让您的误差线显示在图中,yerr
中的列名应该与条形图中的数据相匹配。尝试重命名 CA_errors
。
要更改 x 标签,请尝试 ax.set_xticklabels(df.Specimen);
_, ax= plt.subplots()
CA_means = df[['CA_Native_Mean','CA_Implant_Mean']]
CA_errors = df[['CA_Native_Error','CA_Implant_Error']].\
rename(columns={'CA_Native_Error':'CA_Native_Mean',
'CA_Implant_Error':'CA_Implant_Mean'})
CA_means.plot.bar(yerr=CA_errors, ax=ax)
ax.set_xticklabels(df.Specimen);
</pre>
我需要你的帮助来使用 Python 中的 Pandas 绘制误差线。我已阅读 Pandas 文档,并进行了一些试验和错误,但没有得到令人满意的结果。
这是我的代码:
'''
usage : (python) rc-joint-plot-error-bar.py
'''
from __future__ import print_function
import pandas as pd
import matplotlib.pyplot as plt
filename = 'rc-plot-error-bar.csv'
df = pd.read_csv(filename, low_memory = False)
headers = ['Specimen', 'CA_Native_Mean', 'CA_Implant_Mean', 'CP_Native_Mean',
'CP_Implant_Mean', 'CA_Native_Error', 'CA_Implant_Error', 'CP_Native_Error',
'CP_Implant_Error']
for header in headers :
df[header] = pd.to_numeric(df[header], errors = 'coerce')
CA_means = df[['CA_Native_Mean','CA_Implant_Mean']]
CA_errors = df[['CA_Native_Error','CA_Implant_Error']]
CP_means = df[['CP_Native_Mean', 'CP_Implant_Mean']]
CP_errors = df[['CP_Native_Error', 'CP_Implant_Error']]
CA_means.plot.bar(yerr=CA_errors)
CP_means.plot.bar(yerr=CP_errors)
plt.show()
这是我的数据框的样子:
Specimen CA_Native_Mean CA_Implant_Mean CP_Native_Mean CP_Implant_Mean \
0 1 1 0.738366 1 1.087530
1 2 1 0.750548 1 1.208398
2 3 1 0.700343 1 1.394535
3 4 1 0.912814 1 1.324024
4 5 1 1.782425 1 1.296495
5 6 1 0.415147 1 0.479259
6 7 1 0.934014 1 1.084714
7 8 1 0.526591 1 0.873022
8 9 1 1.409730 1 2.051518
9 10 1 1.745822 1 2.134407
CA_Native_Error CA_Implant_Error CP_Native_Error CP_Implant_Error
0 0 0.096543 0 0.283576
1 0 0.076927 0 0.281199
2 0 0.362881 0 0.481450
3 0 0.400091 0 0.512375
4 0 2.732206 0 1.240796
5 0 0.169731 0 0.130892
6 0 0.355951 0 0.272396
7 0 0.258266 0 0.396502
8 0 0.360461 0 0.451923
9 0 0.667345 0 0.404856
如果我运行代码,我得到如下数字:
我的问题是:
- 你能告诉我如何让误差线出现在数字中吗?
- 如何将索引(x 轴的值)从 0-9 更改为 1-10?
非常感谢!
此致, 阿诺德 A.
快完成了!
为了让您的误差线显示在图中,
yerr
中的列名应该与条形图中的数据相匹配。尝试重命名CA_errors
。要更改 x 标签,请尝试
ax.set_xticklabels(df.Specimen);
_, ax= plt.subplots() CA_means = df[['CA_Native_Mean','CA_Implant_Mean']] CA_errors = df[['CA_Native_Error','CA_Implant_Error']].\ rename(columns={'CA_Native_Error':'CA_Native_Mean', 'CA_Implant_Error':'CA_Implant_Mean'}) CA_means.plot.bar(yerr=CA_errors, ax=ax) ax.set_xticklabels(df.Specimen); </pre>