Plotly堆叠表面共享相同的色条

4
我想绘制三个堆叠曲面,它们共享相同的颜色条和颜色刻度。我希望颜色条在[0.0, 0.1, ..., 0.9, 1.0]中有11个刻度。
但出于某种原因,我似乎无法让plotly对所有三个图使用相同的颜色条和比例尺。现在它们都有自己的颜色比例尺。我可以让它只打印一次颜色条,但它们仍然会有不同的比例尺。
这是我的代码:
def plot_3d(plot_dict, title):
data = []
for i in range(3):
    dataset = plot_dict[kernels[i]]
    data.append(
        go.Surface(
            x=C_2d_range,
            y=gamma_2d_range,
            z=dataset, 
            #showscale=True if i == 0 else False, 
            colorbar=dict(
                nticks=11, 
                tickmode='array',
                tickvals=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
            ),
            colorscale='Viridis'
        )
    )

layout = go.Layout(
    title=title,
    scene = dict(
        xaxis = dict(
            title='C parameter'
        ),

        yaxis = dict(
            title='Gamma parameter'
        ),

        zaxis = dict(
            title='F1 Score'
        )
    )
)

fig = go.Figure(data=data, layout=layout)

ply.iplot(fig, filename=title)  

但它生成的图表this 明确使用了各自的刻度。仅为明确起见,在这种情况下,我希望底部的图表颜色为深色,顶部的图表颜色为黄色。

感谢任何帮助。

1个回答

4

相当晚了,但是对于未来的读者:

要实现这一点的诀窍是需要设置所有表面对象的相同和:

import numpy as np

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

z1 = np.random.uniform(0, 1, (10, 10))
z2 = z1 + 1
z3 = z1 - 1
min_value = np.r_[z1,z2,z3].min()
max_value = np.r_[z1,z2,z3].max()

surf1 = go.Surface(z=z1, cmin=min_value, cmax=max_value)
surf2 = go.Surface(z=z2, showscale=False, cmin=min_value, cmax=max_value)
surf3 = go.Surface(z=z3, showscale=False, cmin=min_value, cmax=max_value)

data = [surf1, surf2, surf3]

plot(data,filename='multiple-surfaces')

结果: 示例图

很不幸,我没有代码/数据了,所以无法尝试这个解决方案,但在你的示例中看起来非常好,所以我会接受它 :) - ClonedOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接