【问题标题】:How to add subplot title to 3D subplot in plotly如何在plotly中将子图标题添加到3D子图
【发布时间】:2019-05-28 05:50:39
【问题描述】:

我正在绘制带有 4 个子图的图像,例如使用以下代码。 如何为每个子图添加标题?

import plotly.offline as py
import plotly.graph_objs as go
from plotly import tools

import numpy as np

x = np.linspace(-5, 80, 10)
y = np.linspace(-5, 60, 10)
xGrid, yGrid = np.meshgrid(y, x)
z = xGrid ** 3 + yGrid ** 3

scene = dict(
    xaxis=dict(
        gridcolor='rgb(255, 255, 255)',
        zerolinecolor='rgb(255, 255, 255)',
        showbackground=True,
        backgroundcolor='rgb(230, 230,230)'
    ),
    yaxis=dict(
        gridcolor='rgb(255, 255, 255)',
        zerolinecolor='rgb(255, 255, 255)',
        showbackground=True,
        backgroundcolor='rgb(230, 230,230)'
    ),
    zaxis=dict(
        gridcolor='rgb(255, 255, 255)',
        zerolinecolor='rgb(255, 255, 255)',
        showbackground=True,
        backgroundcolor='rgb(230, 230,230)'
    )
)

fig = tools.make_subplots(rows=2, cols=2,
                        specs=[[{'is_3d': True}, {'is_3d': True}],
                                [{'is_3d': True}, {'is_3d': True}]])

# adding surfaces to subplots.
fig.append_trace(dict(type='surface', x=x, y=y, z=z, colorscale='Viridis',
                    scene='scene1', showscale=False), 1, 1)
fig.append_trace(dict(type='surface', x=x, y=y, z=z, colorscale='RdBu',
                    scene='scene2', showscale=False), 1, 2)
fig.append_trace(dict(type='surface', x=x, y=y, z=z, colorscale='YlOrRd',
                    scene='scene3', showscale=False), 2, 1)
fig.append_trace(dict(type='surface', x=x, y=y, z=z, colorscale='YlGnBu',
                    scene='scene4', showscale=False), 2, 2)

fig['layout'].update(title='subplots with different colorscales',
                    height=800, width=800)
fig['layout']['scene1'].update(scene)
fig['layout']['scene2'].update(scene)
fig['layout']['scene3'].update(scene)
fig['layout']['scene4'].update(scene)

py.plot(fig, filename='multiple_plots.html')

我尝试替换

fig = tools.make_subplots(rows=2, cols=2, specs=[[{'is_3d': True}, {'is_3d': 
True}], [{'is_3d': True}, {'is_3d': True}]])

以下

fig = tools.make_subplots(rows=2, cols=2, subplot_titles= ('Plot1','Plot2','Plot3','Plot4'),specs=[[{'is_3d': True}, {'is_3d': True}],[{'is_3d': True}, {'is_3d': True}]])

它给了我以下错误


IndexError Traceback(最近一次调用最后一次) 在 () 33 无花果 = tools.make_subplots(rows=2, cols=2,subplot_titles= ('p1','p2','p3','p4'), 34 规格=[[{'is_3d': True}, {'is_3d': True}], ---> 35 [{'is_3d': True}, {'is_3d': True}]]) 36 37 # 向子图添加曲面。

~\AppData\Local\Continuum\anaconda3\lib\site-packages\plotly\tools.py in make_subplots(rows, cols, shared_xaxes, shared_yaxes, start_cell, print_grid, **kwargs) 1373 传球 1374 其他: -> 1375 plot_titles.append({'y': subtitle_pos_y[index], 第1376章 第1377章

IndexError: 列表索引超出范围

我该如何解决这个问题? 谢谢

【问题讨论】:

    标签: python plotly


    【解决方案1】:

    这对我来说似乎是一个错误。 Here 似乎 list_of_domains 从未附加到 3d 图上。当我添加 kwarg shared_xaxes=True 它对我有用。

    fig = tools.make_subplots(rows=2, cols=2,
                        specs=[[{'is_3d': True}, {'is_3d': True}],
                                [{'is_3d': True}, {'is_3d': True}]],
                        subplot_titles=('a','b','c','d'), shared_xaxes=True)
    

    【讨论】:

    • 这对我仍然不起作用。但如果它是一个错误。我会离开它。感谢您的建议。
    • 你确定吗?因为如果我粘贴到您的代码中,它会完美运行。我正在使用python 3.5plotly 3.2.1
    猜你喜欢
    • 2021-02-22
    • 2019-01-06
    • 1970-01-01
    • 2020-06-26
    • 2017-12-25
    • 2021-01-13
    • 2022-06-11
    • 2012-01-20
    • 2023-01-20
    相关资源
    最近更新 更多