我想绘制共享相同颜色条和色阶的 3 个堆叠表面。
我希望颜色条在 [0.0, 0.1, ..., 0.9, 1.0] 中有 11 个刻度。
出于某种原因,我似乎无法为所有三个图形使用相同的颜色条和比例。现在他们都有自己的色阶。
我只能让它打印一次颜色条,但它们仍然会有不同的比例。
这是我的代码:
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)
但它产生 ,其中每个图显然都使用自己的比例。在这种情况下,为了清楚起见,我希望底部的表面变暗,顶部的表面变黄。
谢谢你的帮助。
最佳答案
这个问题相当晚了,但对于 future 的读者:
实现此目的的技巧需要为所有表面对象设置相同的 cmin
和 cmax
:
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')
结果:
关于python - 绘图堆叠表面共享相同的颜色条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48159844/