2017-03-13 3 views
4

다른 범주의 설문 질문 집합을 플롯하려고합니다.축에 두 번째 레이블 줄을 추가하는 방법

그림에서와 같이 Xlabel은 각 질문의 이름입니다. 하지만 카테고리 이름으로 [일반 정보, 기술, 심리학]이라는 다른 라벨을 추가하고 싶습니다. 어쨌든 plt.text()를 사용하여 수동으로 입력하는 대신 그렇게하는 것. 내가 할 수있는 또 다른 방법은 범례를 카테고리에 기반한 색상 코딩으로 바에 넣는 것입니다. 하지만 두 번째 xlabel을 두는 것이 읽기 쉽습니다.

enter image description here

+0

당신이 작성한 줄거리에 대한 코드를 제공 할 수 지금까지? – Kewl

+0

나는 ax.text()를 사용하는 것이 최선의 선택 인 것을 두려워한다. 그런 다음 막대의 위치를 ​​사용하여 텍스트를 잘 정렬 할 수 있습니다. – ImportanceOfBeingErnest

답변

4

이 예에서와 같이 별도의 눈금 라벨 '수준으로'\ n '을 사용하십시오 :

import numpy as np 
import matplotlib.pyplot as plt 

ind = np.arange(3) 
width = .2 

x = list() 
# x labels position: i = 1st bar, i+w/2 = category, i+w = 2nd bar 
for i in ind: 
    x.extend([i, i+width/2., i+width]) 

# plot bars 
fig = plt.figure() 
ax = fig.add_subplot(111) 
rects1 = ax.bar(ind, [1, 3, 5], width, color='r', align = 'center') 
rects2 = ax.bar(ind+width, [2, 4, 6], width, color='g', align = 'center') 
# set ticks and labels 
plt.xticks(x) 
ax.set_xticklabels(('A1','\n\nGeneral Info', 'A2', 'B1','\n\nTechnical', 'B2', 'C1','\n\nPsycological', 'C2'),ha='center') 
# hide tick lines for x axis 
ax.tick_params(axis='x', which='both',length=0) 
# rotate labels with A 
for label in ax.get_xmajorticklabels(): 
    if 'A' in label.get_text(): label.set_rotation(45) 

plt.show() 

enter image description here

+0

얼마나 훌륭한 솔루션입니다. 덕분에 –

+0

코드에서 왜 A1A2가 기울어 졌는지 알 수 없었지만 B C는 그렇지 않습니다. 나는 그들이 기울여 지도록하는 것을 선호한다. –

+0

'label.set_rotation (45)'메소드를보십시오. – Serenity