使用 matplotlib python 进行多轴 x

问题描述 投票:0回答:1

我的目标是得到如下图所示的东西:

目前我尝试像这样构建它:

import matplotlib.pyplot as plt
import numpy as np 

X = ['Class 1','Class 2','Class 3','Class 4', 'Class 5', 'Class 6', 'Class 7'] 

sE = ['-9,51', '-13,5', '0,193', '9,564', '23,13', '-0,252', '-0,442']
s = ['19,605', '28,388', '1,762', '-4,264', '-24,716', '-26,956', '0,382']
eE = ['-5,364', '-7,954', '-3,756', '-0,184', '1,883', '41,876', '-0,012']


X_axis = np.arange(len(X)) 

# plt.bar(X_axis, sE, color='red',width = 0.25, edgecolor='black') 
# plt.bar(X_axis+0.25, s, color='cyan',width = 0.25, edgecolor='black') 
# plt.bar(X_axis+0.5, eE, color='green',width = 0.25, edgecolor='black') 

#plt.hist([sE, s, eE], color = ['red', 'cyan', 'green'], edgecolor = 'black', histtype = 'bar')

#plt.xticks(X_axis, X) 
plt.xlabel("Classes")  
plt.title("Geographical STP A") 
plt.show() 

但我们距离达到预期结果还有很长的路要走。我真的不知道该怎么做,你能帮我吗?

python matplotlib histogram
1个回答
0
投票

为了能够绘图,字符串应转换为数字。

使用基于 matplotlib 进行绘图的 Pandas(或 Seaborn)库,每个 X 值具有多个条形的绘图要容易得多。您的数据没有直方图数据,您似乎想要一个条形图。

这是一些代码。许多定制都是可能的。

import matplotlib.pyplot as plt
import pandas as pd

X = ['Class 1', 'Class 2', 'Class 3', 'Class 4', 'Class 5', 'Class 6', 'Class 7']

sE = ['-9,51', '-13,5', '0,193', '9,564', '23,13', '-0,252', '-0,442']
s = ['19,605', '28,388', '1,762', '-4,264', '-24,716', '-26,956', '0,382']
eE = ['-5,364', '-7,954', '-3,756', '-0,184', '1,883', '41,876', '-0,012']

# organize the data as a pandas dataframe
df = pd.DataFrame({'Class': X, 'sE': sE, 's': s, 'eE': eE})

# convert strings to numeric
df['sE'] = df['sE'].str.replace(',','.').astype(float)
df['s'] = df['s'].str.replace(',','.').astype(float)
df['eE'] = df['eE'].str.replace(',','.').astype(float)

ax = df.set_index('Class').plot(kind='bar')

ax.set_title("Geographical STP A")
ax.tick_params(axis='x', rotation=0)

plt.show()

© www.soinside.com 2019 - 2024. All rights reserved.