Matplotlib 막대 그래프의 가로축 순서가 마음대로 바뀔 때의 대처법
5302 단어 파이썬데이터 과학matplotlib기계 학습
개선 전 ~ 막대 그래프가 생각대로 줄지 않는다 ~
코드
import numpy as np
import matplotlib.pyplot as plt
# 棒グラフをyの値が大きい順に並べたい
data = np.array(['much', 1.11], ['more', 2.22], ['most', 3.33])
# dataをyの降順にソート
data_sorted = data[np.argsort(data[:,1])[::-1]]
# x, yの配列を取得
x = data_sorted[:, 0] #['most', 'more', 'much']
y = data_sorted[:, 1].astype(np.float64) #[3.33, 2.22, 1.11]
# 棒グラフを描画する
fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax1.bar(x, y)
plt.show()
결과
배열 x, y를 y의 내림차순이 되도록 정렬한 상태에서 막대 그래프를 그렸습니다.
그러나 막대 그래프는 그렇게 줄지어 있지 않습니다.
왜?
그래프를 그릴 때 데이터가 자동으로 x의 오름차순이 되도록 정렬되어 버리기 때문에, 그래프가 more -> most -> much 와 같이 x에 관한 사전순으로 줄지어 버리는 것 같습니다.
개선 후
개선 방법 중 하나는 "x 축의 값 자체"와 "x 축의 레이블에 흔들리는 값"을 분리하는 아이디어입니다.
코드
'''
先ほどの続き
x = ['most', 'more', 'much']
y = [3.33, 2.22, 1.11]
'''
# [0, 1.11], [1, 2.22], [2. 3.33] がプロットされた棒グラフのx軸に ['most', 'more', 'much'] の順でラベルを振る
x_temp = range(len(x))
ax2 = fig.add_subplot(1, 2, 2)
ax2.bar(x_temp, y, tick_label=x, color='green')
# 描画
fig.subplots_adjust(wspace=0.4)
plt.show()
결과
이번에는 목표대로 왼쪽에서 y의 내림차순이 되도록 막대 그래프를 늘어놓을 수 있었습니다.
Reference
이 문제에 관하여(Matplotlib 막대 그래프의 가로축 순서가 마음대로 바뀔 때의 대처법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iBotamon/items/4c3bfdbd2caff80a8495텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)