2016-11-09 6 views
0

Python 3.5とSeabornで作成されたswarmplotをいくつかのデータ(別のクラスに格納された列lablesを持つpandasデータフレームdfに格納されています。ただ、プロットを見て、今の問題で、):y軸に対数スケールでプロットされた場合、それは数十年かけて行くのでPython、Seaborn:対数スワッププロットにスウォームの予期しないギャップがある

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

Linear y axis

今のデータは、より読みやすいです。 それでは、対数にスケーリングを変更してみましょう:

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

Log y axis

まあ、私は群れのギャップに問題があります。直線を軸としたプロットが作成され、そこにドットが重なってはならないときにそこにいたので、彼らはそこにいると思います。しかし、今では彼らは奇妙に見え、4つの平等な群れから十分な空間があります。 私の質問は次のとおりです。Seabornにドットの位置を再計算させて、見た目の良いスウォームを作成させるにはどうすればいいですか?

+7

を人々が答えるために自分の時間をボランティアする場合できるだけ簡単に手助けすることが、あなたの最大の関心事です。誰かが頭の上から答えを知るかもしれないが、ボランティアは満足のいく答えが得られるまで、ほとんど常にボランティアが提供されたデータを取り、それを使って遊ぶことが完全に可能である。それから彼らはあなたとそれを共有します。データを提供しないと、誰かがデータを発明して遊ぶことがずっと難しくなります。繰り返しますが、誰かが答えを知っていて、とにかく助けを受けることができます。私の唯一のポイントは、データを提供することによって劇的にあなたのオッズを上げることです。 – piRSquared

+0

完全に同意してください!このケースでは、データフレームにNaNや何かがあるためかもしれません... –

+1

最初にログスケールを設定してください – mwaskom

答えて

1

mwaskomこれを解決する方法のコメントに私にヒントがあります。点を配置することは正しくデータと点座標間の正確な変換を必要とすること

注 それもswamplot dokuに記載されています。これは、スウォームプロットを描画する前に、デフォルト以外の軸制限を設定する必要があることを意味します。

規模を記録し、プロットのためにこれを使用するには、既存の軸の設定:この利回りは正しいで

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) 

と行動をプロット希望: enter image description here

関連する問題