我可以将 vline 和 hline 添加到 plotly plot 中而忽略边缘图吗?
Can I add a vline and hline to a plotly plot ignoring marginal plots?
我正在将可视化从 seaborn 库移动到 plotly 库。
我想要一个带有 x 和 y 变量边缘直方图的散点图。
我想为 x 和 y 变量的平均值显示垂直线和水平线。
为了展示我的问题,我创建了一个随机 X 和 Y 值的虚拟数据框
import pandas as pd
import numpy as np
import seaborn as sns
import plotly.express as px
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('XY'))
我想在 plotly 上复制 seaborn 库输出。
g = sns.JointGrid(data=df, x="X", y="Y")
g.plot(sns.scatterplot, sns.histplot)
g.refline(x=df.X.mean(), y=df.Y.mean())
plt.show()
当我使用 add_line
和 add_hline
在情节上做类似的事情时,我得到以下信息:
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('XY'))
fig = px.scatter(df, x='X', y='Y',
marginal_y="histogram", marginal_x="histogram",
width=800, height=600)
fig.add_hline(y=df['X'].mean(), line_dash='dash', annotation_text= f"{df['X'].mean():.0f}")
fig.add_vline(x=df['Y'].mean(), line_dash='dash', annotation_text=f"{df['Y'].mean():.0f}")
fig.show()
我的问题是水平线也绘制在边缘 x 图上,垂直线也绘制在边缘 y 图上。有没有办法防止在边缘 x 图上绘制水平线,在边缘 y 图上绘制垂直线?
绘图时可以定义面板网格的行列hline/vline:
fig.add_hline(y=df['X'].mean(), line_dash='dash', row=1, annotation_text= f"{df['X'].mean():.0f}")
fig.add_vline(x=df['Y'].mean(), line_dash='dash', col=1, annotation_text=f"{df['Y'].mean():.0f}")
示例输出:
我正在将可视化从 seaborn 库移动到 plotly 库。 我想要一个带有 x 和 y 变量边缘直方图的散点图。 我想为 x 和 y 变量的平均值显示垂直线和水平线。
为了展示我的问题,我创建了一个随机 X 和 Y 值的虚拟数据框
import pandas as pd
import numpy as np
import seaborn as sns
import plotly.express as px
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('XY'))
我想在 plotly 上复制 seaborn 库输出。
g = sns.JointGrid(data=df, x="X", y="Y")
g.plot(sns.scatterplot, sns.histplot)
g.refline(x=df.X.mean(), y=df.Y.mean())
plt.show()
当我使用 add_line
和 add_hline
在情节上做类似的事情时,我得到以下信息:
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('XY'))
fig = px.scatter(df, x='X', y='Y',
marginal_y="histogram", marginal_x="histogram",
width=800, height=600)
fig.add_hline(y=df['X'].mean(), line_dash='dash', annotation_text= f"{df['X'].mean():.0f}")
fig.add_vline(x=df['Y'].mean(), line_dash='dash', annotation_text=f"{df['Y'].mean():.0f}")
fig.show()
我的问题是水平线也绘制在边缘 x 图上,垂直线也绘制在边缘 y 图上。有没有办法防止在边缘 x 图上绘制水平线,在边缘 y 图上绘制垂直线?
绘图时可以定义面板网格的行列hline/vline:
fig.add_hline(y=df['X'].mean(), line_dash='dash', row=1, annotation_text= f"{df['X'].mean():.0f}")
fig.add_vline(x=df['Y'].mean(), line_dash='dash', col=1, annotation_text=f"{df['Y'].mean():.0f}")
示例输出: