0

Python 3.5 と Seaborn を使用していくつかのデータで作成された swarmplot を見てみましょう (これは pandas データフレーム df に格納され、列ラベルは別のクラスに格納されています。これは今のところ問題ではありません。プロットを見てください)。

ax = sns.swarmplot(x=self.dte.label_temperature, y=self.dte.label_current, hue=self.dte.label_voltage, data = df)

線形 y 軸

数十年にわたるデータであるため、y 軸に対数スケールでプロットすると、データが読みやすくなります。それでは、スケーリングを対数に変更しましょう。

ax.set_yscale("log")
ax.set_ylim(bottom = 5*10**-10)

対数 y 軸

さて、私は群れの隙間に問題があります。プロットが線形軸を念頭に置いて作成されたときにそこにあり、ドットがそこで重なってはならないので、それらはそこにあると思います。しかし、今では彼らはちょっと奇妙に見え、4つの同じように見える群れから十分なスペースがあります. 私の質問はseaborn、ドットの位置を強制的に再計算して、見栄えの良い群れを作成するにはどうすればよいですか?

4

1 に答える 1

3

mwaskomは、コメントでこれを解決する方法を教えてくれました。それはswamplot dokuにも記載されています:

ポイントを適切に配置するには、データとポイント座標間の正確な変換が必要であることに注意してください。これは、swarm プロットを描画する前に、デフォルト以外の軸の制限を設定する必要があることを意味します。

既存の軸を対数スケールに設定し、これをプロットに使用します。

    fig = plt.figure() # create figure
    rect = 0,0,1,1 # create an rectangle for the new axis
    log_ax = fig.add_axes(rect) # create a new axis (or use an existing one)
    log_ax.set_yscale("log") # log first
    sns.swarmplot(x=self.dte.label_temperature, y=self.dte.label_current, hue=self.dte.label_voltage, data = df, ax = log_ax)

これにより、正しく望ましいプロット動作が得られます。 ここに画像の説明を入力

于 2016-11-16T13:38:12.197 に答える