2017-12-01 19 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

関連する問題