2017-09-30 11 views
-1

EDIT:私はそれがあったはずのはっきりしていなかったように質問を書き直しました。 私は共通の独立変数(流速)で2つのデータセット(df3とdf4がそれぞれ頭部と効率の情報を保持しています)を持っています。 私は両方のグラフを同じグラフにプロットしようとしていますが、従属変数には異なるY軸があります。私は最初に多項式順序機能のためにlmplotを使用しましたが、これは両方のプロットを1つのウィンドウに表示することに失敗しました。私は散布図と回帰グラフの両方をデータセット間の重なりを示す1つのプロットに結合する助けが必要です。シボーンを介した二重プロットX軸

私は私のグラフを生成するには、次のアプローチを使用している:線が互いにに対してプロットされることが重要である理由

ax2.scatter(df3['Flow_Rate_(KG/S)'], df2['Efficiency_%'], color='pink') 
ax2.scatter(df4['Flow_Rate_(KG/S)'], df4['Total Head'], color='teal') 
plt.show() 

理由は、モニターのポンプ性能に、我々は両方を持っている必要があるということです性能の関係とそれに続く劣化を理解するためにポンプの全頭(M)と効率%を測定します。

私が考えることができる唯一の他の方法は、多項式関数を方程式としてプロット関数の引数に入れ、そのように引き出すことです。私はまだこれを試していないが、私はこの道を下る前に他の選択肢があるかどうか尋ねると思った。

ありがとうございます。

Scatter Plot

解決興味のある方のためには、私が.twinx()以下のようにregplotとライブラリを使用していました。

fig, ax = plt.subplots() 
ax2 = ax.twinx() #This allows the common axes (flow rate) to be shared 
sbn.regplot(x="Flow_Rate_(KG/S)", y="Total Head", data=df3, order=2, ax=ax) 
sbn.regplot(x="Flow_Rate_(KG/S)", y="Efficiency_%", data=df4, order=2, 
ax=ax2) 
ax2.set_ylim(0,1)#This is used to set the limit for efficiency. Without this being set, the curves do not line up. 
+0

@ImportanceOfBeingErnest - あなたは1区で、私がseabornで作成した2つの多項式を得ることが可能であると言っていますか?私が提案したもの以外に他の選択肢があるかどうかは疑問だった。それ以外の場合は、方程式のアプローチを試してみます。唯一の問題は、実際には方程式が変わる可能性がある場合、解は固定式を必要とすることです。 – azurekirby

+0

@ImportanceOfBeingErnest - 質問を改善するためのヒントをありがとうございます。私は正式にそのように編集しました。私はそれが私が少し明確にした後になることを願っています:)。 – azurekirby

+0

@ImportanceOfBeingErnest - あなたが提供したアプローチを試しましたが、何らかの理由で私の軸が '効率' y軸を認識していないようですが、トータルヘッドのみを認識しているようです。なぜこれが当てはまるのですか? – azurekirby

答えて

1

私は、問題を修正してくださいしてみましょう:あなたは一般的な2つの独立した値を持つデータセットが、異なる依存値(f(x)が、G(x)のそれぞれを)持っています。それらを両方とも同じグラフにプロットしたいが、依存値は全く異なる範囲を持つ。したがって、データセットごとに1つずつ、2つの異なるy軸を使用する必要があります。データは散布図としてプロットし、それぞれについて回帰直線を表示する必要があります。あなたは、回帰曲線自体を知っているか計算しているよりも、回帰直線を見ることにもっと興味があります。したがって、海軍のlmplotを使用しようとしましたが、両方のデータセットを同じグラフに入れることに失敗しました。

上記の問題を解決したい場合は、次のような回答が考えられます。

lmplotは、基本的に軸グリッドにregplotをプロットします。その軸のグリッドはここでは必要ないので、regplotを使用する方が意味があります。その後、軸と双軸を作成し、それぞれに1つのregplotをプロットすることができます。

import numpy as np; np.random.seed(42) 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

df1 = pd.DataFrame({"x": np.sort(np.random.rand(30)), 
        "f": np.sort(np.random.rayleigh(size=30))}) 
df2 = pd.DataFrame({"x": np.sort(np.random.rand(30)), 
        "g": 500-0.1*np.sort(np.random.rayleigh(20,size=30))**2}) 

fig, ax = plt.subplots() 
ax2 = ax.twinx() 
sns.regplot(x="x", y="f", data=df1, order=2, ax=ax) 
sns.regplot(x="x", y="g", data=df2, order=2, ax=ax2) 


ax2.legend(handles=[a.lines[0] for a in [ax,ax2]], 
      labels=["f", "g"]) 
plt.show() 

enter image description here

+0

上記のように、あなたは[mcve]がこのような質問にどのように使用できるかを見ることができます。 – ImportanceOfBeingErnest

+0

信じられないほど - それはまさに私が後にしていることです!どうもありがとうございます!私は次回の質問を改善する方法を書き留めます。 .regplotでax = ax引数を使うことはできませんでした。私はあなたがその機能で注文= 2を使うことができたことさえ知りませんでした。何か新しいことを教えてくれてありがとう!私はとても感謝しています! – azurekirby

+0

「この文書はRegplot()とFacetGridを組み合わせたものです」[...]という[Documentation](https://seaborn.pydata.org/generated/seaborn.lmplot.html) lmplot()は内部的にregplot()を使用し、ほとんどのパラメータを取ります。しかし、regplot()はAxes- lmplot()はFigureレベルの関数[..] "であるのに対して、Axes(現在アクティブな軸またはaxパラメータによって提供されている軸のいずれか)に直接描画します。 – ImportanceOfBeingErnest

関連する問題