JointPlot
パンダに保存されている「観測されたカウントと濃度」のセットからSeabornをプロットしましたDataFrame
。違いを簡単に比較できるように、各濃度の「予想カウント」の限界(つまり、単変量分布)を既存の限界の上に(同じ軸のセットに)オーバーレイしたいと思います。
このグラフは、軸が異なり、データセットが2つしかないものの、私が望むものと非常によく似ています。
これが私のデータがどのようにレイアウトされ、関連しているかの例です:
df_observed
x axis--> log2(concentration): 1,1,1,2,3,3,3 (zero-counts have been omitted)
y axis--> log2(count): 4.5, 5.7, 5.0, 9.3, 16.0, 16.5, 15.4 (zero-counts have been omitted)
df_expected
x axis--> log2(concentration): 1,1,1,2,2,2,3,3,3
したがって、の分布のdf_expected
上にの分布を重ね合わせると、df_observed
各濃度でカウントが欠落している場所が示されます。
私が現在持っているもの
各濃度で観測されたカウントを使用したジョイントプロット各濃度で 予想されるカウントの個別のジョイントプロット。このプロットの限界を上記のジョイントプロットの限界の上に重ねてほしい
PS:私はStack Overflowを初めて使用するので、質問をより適切に行う方法についての提案は感謝の気持ちで満たされます。また、私は自分の質問に対する答えを広範囲に検索しましたが、役に立ちませんでした。さらに、Plotlyソリューションも同様に役立ちます。ありがとうございました
意図した以上にJointPlotを変更しようとすると、代わりにJointGridを使用します。これにより、周辺のプロットのパラメーターを変更できます。
以下は、各マージナルに別のヒストグラムを追加する、動作中のJointGridの例です。これらのヒストグラムは、追加したい期待値を表しています。私はランダムなデータを生成したので、おそらくあなたのようには見えないことを覚えておいてください。
コードを見てください。ここでは、観測されたデータの範囲と一致するように、1秒ごとのヒストグラムの範囲を変更しました。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(100,4), columns = ['x', 'y', 'z', 'w'])
plt.ion()
plt.show()
plt.pause(0.001)
p = sns.JointGrid(
x = df['x'],
y = df['y']
)
p = p.plot_joint(
plt.scatter
)
p.ax_marg_x.hist(
df['x'],
alpha = 0.5
)
p.ax_marg_y.hist(
df['y'],
orientation = 'horizontal',
alpha = 0.5
)
p.ax_marg_x.hist(
df['z'],
alpha = 0.5,
range = (np.min(df['x']), np.max(df['x']))
)
p.ax_marg_y.hist(
df['w'],
orientation = 'horizontal',
alpha = 0.5,
range = (np.min(df['y']), np.max(df['y'])),
)
私が呼ぶ部分は、私plt.ion plt.show plt.pause
が図を表示するために使用するものです。それ以外の場合、コンピュータに図が表示されません。この部分は必要ないかもしれません。
Stack Overflowへようこそ!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加