Mehrachsiges x mit Matplotlib Python

WBOY
Freigeben: 2024-02-09 18:12:04
nach vorne
1153 Leute haben es durchsucht

使用 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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage