在图形中绘制设置跟踪位置
Plotly Set Trace Position in a Figure
我是 Plotly 的新手,我想知道是否有一种方法可以指定新轨迹需要在 Figure 对象中居中的位置。
为了更清楚,这是一个例子:
import plotly.express as px
import plotly.graph_objects as go
df = pd.DataFrame(something)
fig = go.Figure()
for i in [40,45,50]:
fig.add_shape(
go.layout.Shape(
type='line',
xref='x',
yref='y',
x0=line_data[i]["min"],
y0=i,
x1=line_data[i]["max"],
y1=i,
),
)
fig.add_trace(
go.Scatter(
x=df.ColA.values,
y=df.ColB.values,
mode='markers',
)
)
这是结果
我的目标是构建每条水平线点的直方图。
我不知道有没有更好更快的方法,但我的想法是添加更多的轨迹,每个轨迹都有一个直方图,然后 center 那些轨迹在每行。有办法吗?也许一些 position 跟踪参数,例如 (xcenter=7.5, ycenter=50)?
我理想的结果应该是:
- 你描述了直方图/频率倍数观察到的项目
- 已使用 base
将这些映射到 y 轴
import numpy as np
import plotly.graph_objects as go
df = pd.DataFrame({40:np.random.normal(5,2, 200).astype(int),50:np.random.normal(6,2, 200).astype(int),60:np.random.normal(6.5,2, 200).astype(int)})
# change to frequency of observed values
df2 = df[40].value_counts().to_frame().join(df[50].value_counts(), how="outer").join(df[60].value_counts(), how="outer")
# plot bar of frequency, setting base based on observation
fig = go.Figure([go.Bar(x=df2.index, y=df2[c]/len(df2), base=c, name=c) for c in df2.columns])
fig.update_layout(barmode="overlay")
我是 Plotly 的新手,我想知道是否有一种方法可以指定新轨迹需要在 Figure 对象中居中的位置。
为了更清楚,这是一个例子:
import plotly.express as px
import plotly.graph_objects as go
df = pd.DataFrame(something)
fig = go.Figure()
for i in [40,45,50]:
fig.add_shape(
go.layout.Shape(
type='line',
xref='x',
yref='y',
x0=line_data[i]["min"],
y0=i,
x1=line_data[i]["max"],
y1=i,
),
)
fig.add_trace(
go.Scatter(
x=df.ColA.values,
y=df.ColB.values,
mode='markers',
)
)
这是结果
我的目标是构建每条水平线点的直方图。
我不知道有没有更好更快的方法,但我的想法是添加更多的轨迹,每个轨迹都有一个直方图,然后 center 那些轨迹在每行。有办法吗?也许一些 position 跟踪参数,例如 (xcenter=7.5, ycenter=50)?
我理想的结果应该是:
- 你描述了直方图/频率倍数观察到的项目
- 已使用 base 将这些映射到 y 轴
import numpy as np
import plotly.graph_objects as go
df = pd.DataFrame({40:np.random.normal(5,2, 200).astype(int),50:np.random.normal(6,2, 200).astype(int),60:np.random.normal(6.5,2, 200).astype(int)})
# change to frequency of observed values
df2 = df[40].value_counts().to_frame().join(df[50].value_counts(), how="outer").join(df[60].value_counts(), how="outer")
# plot bar of frequency, setting base based on observation
fig = go.Figure([go.Bar(x=df2.index, y=df2[c]/len(df2), base=c, name=c) for c in df2.columns])
fig.update_layout(barmode="overlay")