Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Multi-axis x menggunakan matplotlib python

Multi-axis x menggunakan matplotlib python

WBOY
WBOYke hadapan
2024-02-09 18:12:041149semak imbas

使用 matplotlib python 进行多轴 x

Kandungan soalan

Matlamat saya adalah untuk mendapatkan sesuatu seperti gambar di bawah:

Pada masa ini saya cuba membinanya seperti ini:

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

Tetapi kita masih jauh untuk mencapai hasil yang diinginkan. Saya benar-benar tidak tahu apa yang perlu dilakukan, bolehkah anda membantu saya?


Jawapan Betul


Untuk dapat memplot, rentetan hendaklah ditukar kepada nombor.

Memplot dengan berbilang bar bagi setiap nilai x adalah lebih mudah menggunakan perpustakaan panda (atau seaborn) berdasarkan matplotlib untuk merancang. Data anda tidak mempunyai data histogram, anda nampaknya mahukan plot bar.

Ini adalah beberapa kod. Banyak penyesuaian boleh dilakukan.

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

Penyesuaian yang mungkin termasuk:

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: Bingkai data kelihatan seperti ini:

Kategori se s ee 标题> 1 kategori -9.51 19.605 -5.364 2 kategori -13.5 28.388 -7.954 Tahap 3 0.193 1.762 -3.756 4 kategori 9.564 -4.264 -0.184 Tahap 5 23.13 -24.716 1.883 Tingkat 6 -0.252 -26.956 41.876 7 kategori -0.442 0.382 -0.012 表>

Atas ialah kandungan terperinci Multi-axis x menggunakan matplotlib python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam