python - Plotly:如何显示除边际直方图计数之外的其他值?
问题描述
我正在尝试在原始图上方创建一个链接的边缘图,具有相同的 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()
我基于的文档:https ://plotly.com/python/marginal-plots/
我想要的结果: 示例:
不同之处在于我使用了聚合的 df,所以我的计数只有 1,而不是样本量。
有任何想法吗?
谢谢!
解决方案
我明白你的说法
[...] 以及我的 y 轴上某物的速率
...表示您想在直方图上显示一个不计数的值。
marginal_x='histogram'
inpx.scatter()
似乎默认显示 counts only,这意味着没有直接的方式来显示单个观察值的值。但是,如果您愿意与andfig = make_subplots()
结合使用,那么您可以轻松构建:go.Scatter()
go.Bar()
阴谋
完整代码:
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=2, cols=1,
row_heights=[0.2, 0.8],
vertical_spacing = 0.02,
shared_yaxes=False,
shared_xaxes=True)
df = pd.DataFrame(
{
"date": [pd.Timestamp("20200102"), pd.Timestamp("20200103")],
"rate": [0.88, 0.96],
"samples": [130, 1200]
}
)
fig.add_trace(go.Bar(x=df['date'], y=df['rate'], name = 'rate'), row = 1, col = 1)
fig.update_layout(bargap=0,
bargroupgap = 0,
)
fig.add_trace(go.Scatter(x=df['date'], y=df['samples'], name = 'samples'), row = 2, col = 1)
fig.update_traces(marker_color = 'rgba(0,0,250, 0.3)',
marker_line_width = 0,
selector=dict(type="bar"))
fig.show()
推荐阅读
- laravel - Laravel 5.8 单元测试邮件:未发送可邮寄
- azure-devops - 跨多个项目查询 lastChanged 工作项
- python - 在 Django 模型中添加多个图像
- python - Pandas Groupby 年月成列
- automapper - AutoMapper 10.0.0 with F# - 如何在没有额外映射的情况下修复它?
- indy - Indy 10 电子邮件附件出现在正文中
- android - 颤振构建apk导致错误:找不到用于签名配置“发布”的密钥库文件
- javascript - Vue - 在这种情况下如何传递数组?
- java - Hibernate 创建两个连接同一张表
- web-scraping - 有什么方法可以得到所有标题链接的输出,因为 iv 没有也没有错误