我试图在原始图上方创建一个链接的边际图,具有相同的 x 轴但具有不同的 y 轴。
我已经看到,在plotly.express包中有 4 个选项,您可以在散点图上创建 margin_x 图,但它们都基于与 x 和 y 相同的列。
就我而言,我的 x 轴上有一个日期,y 轴上有某物的比率,我试图生成该比率所基于的样本的直方图边际分布图(位于样本列中) df)。
我正在简化我所尝试的内容,但不会减少任何重要细节:
import pandas as pd
import plotly.express as px
df = pd.DataFrame(
{
"date": [pd.Timestamp("20200102"), pd.Timestamp("20200103")],
"rate": [0.88, 0.96],
"samples": [130, 1200])
}
)
fig = px.scatter(df, x='date', y='rate', marginal_x='histogram')
fig.show()
Run Code Online (Sandbox Code Playgroud)
我基于的文档: https: //plotly.com/python/marginal-plots/
我想要的结果: 示例:
不同之处在于我使用聚合 df,因此我的计数只是 1,而不是样本数量。
有任何想法吗?
谢谢!
对于研究数据可视化,我想在 Plotly 中制作动画 3D 曲面图。目标是观察盒子内温度随时间的变化。但我不知道如何让它动起来。
目前我只有在给定时间我的情节。这是我的代码:
import plotly
import plotly.graph_objects as go
#import plotly.express as px
import pandas as pd
#import numpy as np
#read CSV
z_data = pd.read_csv('data1.csv')# Read data from a csv
fig = go.Figure(data=[go.Surface(z=z_data.values)])
#projection 2D
fig.update_traces(contours_z=dict(show=True, usecolormap=True,
highlightcolor="tomato", project_z=True),
colorscale='portland')
#fig
fig.update_layout(title='data HEATPILES', autosize=False, width=650, height=500, margin=dict(l=0, r=0, b=0, t=0))
#show
plotly.offline.plot(fig)
Run Code Online (Sandbox Code Playgroud)
data1.csv 只是这个: data1.csv
但我有更多关于时间函数的点位置的数据,我想制作一个动画情节,这样我们就可以清楚地看到时间的演变。
这是给定时间的结果 给定时间的绘图
我在plotly文档中看到,可以从这里使用 px.scatter 和 px.line 制作动画,从那里我们可以使用图像来制作动画,所以我想使用曲面图是可能的。
如果您能帮助我,我将非常感激!感谢您的帮助,
提奥菲勒
这是我的代码
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({
"City": ["Toronto", "Toronto", "Toronto", "CPH", "CPH", "London", "London"],
"Tower name": ["T1", "T2", "T3", "T4", "T5", "T6","T7"],
"Height": [1.0, 1.5, 2.0, 3.0, 4.0, 2.0 ,5.0],
})
fig = go.Figure(go.Bar(x=df.loc[:,["City", "Tower name"]].T.values, y=df["Height"].values))
fig.show()
Run Code Online (Sandbox Code Playgroud)
该代码给出以下输出:

期望的输出如下图所示:

为了隐藏内部类别,我尝试在数据中创建一个空列,如下所示,但这不起作用
df['empty'] = ""
fig = go.Figure(go.Bar(x=df.loc[:,["City", "Tower name"]].T.values, y=df["Height"].values))
fig.update_xaxes(ticktext = df['empty'])
fig.show()
Run Code Online (Sandbox Code Playgroud)
为了旋转刻度线,我使用了tickangle,但这只会旋转内部类别。城市名称保持不变
fig = go.Figure(go.Bar(x=df.loc[:,["City", "Tower name"]].T.values, y=df["Height"].values))
fig.update_xaxes(tickangle = -90)
fig.show()
Run Code Online (Sandbox Code Playgroud)

这是该线程的后续问题:删除分组绘图表达条形图中的空条,以使每组条形之间的视觉距离相等
当我尝试将 add_trace 添加到 sunbplots 时,出现此错误。该图是一个图形对象对象。
fig = make_subplots(rows = len(dfbh['client'].value_counts().index.tolist()), cols = 1)
scatbh = go.Scatter3d(x=dfbhtemp['x_local'], y=dfbhtemp['y_local'], z=dfbhtemp['z_local'], mode = 'markers', )
scatrun = go.Scatter3d(x=dfrunstemp['x_local'], y=dfrunstemp['y_local'], z=dfrunstemp['z_local'], mode = 'markers')
fig.add_trace(scatbh, row = 1, col = 1)
fig.add_trace(scatrun, row = 1, col = 1)
fig.show()
ValueError: Trace type 'scatter3d' is not compatible with subplot type 'xy'
at grid position (2, 1)
Run Code Online (Sandbox Code Playgroud)
当使用没有行或列的子图时,这些图正常绘制。
我正在尝试使用绘图对象来可视化来自不同 pandas 数据帧的时间戳。成功添加跟踪作为 go.Scatter() 图后,我现在想添加 px.timeline() 图作为跟踪。这一般可以吗?
这是我的代码:
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
df=pd.read_json(file1.json)
df2=pd.read_json(file2.json)
df3=pd.read_json(file3.json)
fig = go.Figure(layout=layout)
fig.add_trace(
go.Scatter(x=df.column1, y=df.column2, name='name1', mode='markers')
)
fig.add_trace(
go.Scatter(x=df2.column1, y=df2.column2, name='name2', mode='markers')
)
fig.add_trace(
go.Scatter(x=df3.column1, y=df3.column2, name='name3', mode='markers')
)
#### add px trace ###
fig.update_traces(marker_size=10)
fig.show()
Run Code Online (Sandbox Code Playgroud)
到目前为止,这运作良好。现在,我想将 px.timeline() 图添加为我的图形的跟踪。我试过:
fig.add_trace(
px.timeline(df,x_start="column1",
x_end="column2", y='column3')
Run Code Online (Sandbox Code Playgroud)
这会引发值错误:
ValueError:
Invalid element(s) received for the 'data' property of [...]
Run Code Online (Sandbox Code Playgroud)
是否有解决方法可以将 px.-Plots 添加到 go.Figure() ?