首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置包含热图的两个水平子图,使它们不共享一个色标?

如何设置包含热图的两个水平子图,使它们不共享一个色标?
EN

Stack Overflow用户
提问于 2017-02-18 15:52:45
回答 2查看 3.3K关注 0票数 0

我有两个热图。它们的值在完全不同的比例中,所以不应该共享一个颜色比例。我尝试创建一个带有两个子图(水平排列)的图形,并将我的每个热图放入其中一个子图中。但是,两个热图在右侧热图的右侧共享相同的色标。色标显示彼此重叠的两组标签。我想看到的是有两个色标,每个热图的右边一个。

我的代码如下。有人看到问题了吗?

代码语言:javascript
复制
fig = plotly.tools.make_subplots(rows=1, cols=2)

fig.append_trace(mm, 1, 1)
fig.append_trace(sm, 1, 2)

plotly.offline.iplot(fig)

我已经尝试将share_xaxesshare_yaxes显式设置为False。没帮上忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-18 17:27:31

您可以显式指定colorbar的x position,请参见下面的示例。

这个数字在笔记本上看起来更好,也许还应该移动正确的曲线图?

代码语言:javascript
复制
import plotly.plotly as py
import plotly.graph_objs as go
import plotly
plotly.offline.init_notebook_mode()

mm = go.Heatmap(
        z=[[1, 20, 30],
           [20, 1, 60],
           [30, 60, 1]],
        colorbar = dict(x=0.45), 
    colorscale='Viridis'
    )
sm = go.Heatmap(
        z=[[1, 2, 3],
           [2, 1, 6],
           [3, 6, 1]]
    )
fig = plotly.tools.make_subplots(rows=1, cols=2)
fig.append_trace(mm, 1, 1)
fig.append_trace(sm, 1, 2)

plotly.offline.iplot(fig)
票数 2
EN

Stack Overflow用户

发布于 2020-03-01 19:16:05

我找到了这个解决方案:对于3个热图,我创建了一个由6个框组成的网格,以便手动将每个热图的颜色条放在边上:

代码语言:javascript
复制
fig = make_subplots(rows=1, cols=6,
                    subplot_titles=("Web", "Magasin", "Email"),
                    specs=[[{}, None, {}, None, {}, None]],
                    shared_yaxes=True)

然后我通过定义每个颜色条来绘制热图:

代码语言:javascript
复制
fig.add_trace(go.Heatmap(
    z=df_web.values,
    x=df_web.columns.tolist(),
    y=df_web.index.tolist(),
    colorscale='RdBu',
    reversescale=True,
    colorbar = dict(x=0.27, title='Nb moyen', thickness=15)), row=1, col=1
)

fig.add_trace(go.Heatmap(
    z=df_mag.values,
    x=df_mag.columns.tolist(),
    y=df_mag.index.tolist(),
    colorscale='RdBu',
    reversescale=True,
    colorbar = dict(x=0.62, title='Nb moyen', thickness=15)), row=1, col=3
)

fig.add_trace(go.Heatmap(
    z=df_email.values,
    x=df_email.columns.tolist(),
    y=df_email.index.tolist(),
    colorscale='RdBu',
    reversescale=True,
    colorbar = dict(x=0.97, title='Nb moyen', thickness=15)), row=1, col=5
)

最后,我定义了位置:

代码语言:javascript
复制
fig.update_layout(title_text='Répartition par jour et heure', title_x=0.5,
                height=250, margin=dict(l=0,r=0,b=50,t=25),
                xaxis=dict(
        domain=[0, 0.27]
    ),
    xaxis2=dict(
        domain=[0.35, 0.62]
    ),
    xaxis3=dict(
        domain=[0.7, 0.97]
    ))

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42312634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档