2017-12-01 1 views
0

나는 seaborn과 matplotlib를 사용하여 막 대형 차트를 플로팅하고 있습니다. 나는 음모와 라인 모두로 음모를 주석하고 싶습니다. 여기 matplotlib에서 주석선 (축의 바깥 쪽)으로 수평선을 추가하는 방법은 무엇입니까?

는 그림을 생성하기위한 나의 전략이다 ( plot_data를 제공하기 위해 사과를하지만 오히려 큰) : 생성

 plt.figure() 
     ax = seaborn.barplot(x='cell_line', y='DeltaCt', data=plot_data, hue='time') 
     plt.title('Baseline: {}'.format(g)) 
     plt.ylabel('DeltaCt') 
     plt.xlabel('') 
     trans = ax.get_xaxis_transform() 
     ax.annotate('Neonatal', xy=(0.4, -0.1), xycoords=trans) 
     plt.show() 

: 나는 사이의 음모에 또 다른 검은 색 선이 필요하지만 enter image description here

X 축 및 '신생아'주석. enter image description here

+0

사과는 허용되지 않습니다. 문제의 [mcve]를 제공하기에는 너무 게으르므로 지금 대답하려는 모든 사람은 모든 작업을 수행해야합니다. 이게이게 어떻게 작동한다고 생각하니? – ImportanceOfBeingErnest

+0

죄송합니다. 많은 것을 생각하지 않았습니다. 어쨌든 답변 해 주셔서 감사합니다. – CiaranWelsh

답변

1

일부 관련 질문 :이처럼 여기

당신은 수직선을 원하지만, 그 선이 필요 ~ b e 좌표를 x 축으로 따라 표시합니다. 따라서 ax.get_xaxis_transform()을 사용할 수 있습니다. 축 외부에 선을 표시하려면 clip_on = False을 사용하십시오.

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

plot_data = pd.DataFrame({"cell_line": np.random.choice(list("ABCDEFG"), size=150), 
          'DeltaCt' : np.random.rayleigh(5,size=150), 
          "time":np.random.choice([0,96], size=150)}) 

plt.figure() 
ax = sns.barplot(x='cell_line', y='DeltaCt', data=plot_data, hue='time', 
       order=list("ABCDEFG")) 
plt.title('Baseline: {}'.format("H")) 
plt.ylabel('DeltaCt') 
plt.xlabel('') 
trans = ax.get_xaxis_transform() 
ax.annotate('Neonatal', xy=(1, -.1), xycoords=trans, ha="center", va="top") 
ax.plot([-.4,2.4],[-.08,-.08], color="k", transform=trans, clip_on=False) 
plt.show() 

enter image description here

관련 문제