Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrachsiges x mit Matplotlib Python

Mehrachsiges x mit Matplotlib Python

WBOY
WBOYnach vorne
2024-02-09 18:12:041147Durchsuche

使用 matplotlib python 进行多轴 x

Frageninhalt

Mein Ziel ist es, etwas wie das Bild unten zu bekommen:

Derzeit versuche ich es so aufzubauen:

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()

Doch von den gewünschten Ergebnissen sind wir noch weit entfernt. Ich weiß wirklich nicht, was ich tun soll. Können Sie mir helfen?


Richtige Antwort


Um plotten zu können, sollten Zeichenfolgen in Zahlen umgewandelt werden.

Das Plotten mit mehreren Balken pro x-Wert ist viel einfacher, wenn Sie zum Plotten die Pandas- (oder Seaborn-)Bibliothek verwenden, die auf Matplotlib basiert. Ihre Daten enthalten keine Histogrammdaten, Sie möchten offenbar ein Balkendiagramm.

Hier ist ein Code. Viele Anpassungen sind möglich.

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()

Mögliche Anpassungen können sein:

ax = df.set_index('Class').plot(kind='bar', color=['crimson', 'limegreen', 'dodgerblue'])

ax.set_title("Geographical STP A")
ax.tick_params(axis='x', rotation=0, length=0)  # rotate tick labels horizontally, remove tick mark
ax.grid(True, axis='y')  # add a grid in the y direction
ax.set_xlabel('')  # remove superfluous x label
for dir in ['top', 'bottom', 'right']:
    ax.spines[dir].set_visible(False)  # remove the border around the plot

ps: Der Datenrahmen sieht so aus:

Kategorie se s ee 标题> 1 Kategorie -9.51 19.605 -5.364 2 Kategorien -13.5 28.388 -7.954 Stufe 3 0,193 1.762 -3.756 4 Kategorien 9.564 -4.264 -0,184 Stufe 5 23.13 -24.716 1.883 Stufe 6 -0,252 -26.956 41.876 7 Kategorien -0,442 0,382 -0,012 表>

Das obige ist der detaillierte Inhalt vonMehrachsiges x mit Matplotlib Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen