I need your help on plotting error bars using Pandas in Python. I have read the Pandas documentation, and did some trials and errors, but got no satisfying result.
Here is my code:
'''
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()
Here is what my dataframe looks like:
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
If I ran the code, I got the following figures:
My questions are:
Big thanks!
Regards, Arnold A.
You're almost there!
For your error bars to show up in the plot, the column names in yerr
should match those of the data in the bar plot. Try renaming CA_errors
.
For changing x-labels, try 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);
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments