我有一个10x12
数组,我想使用plotly
进行绘制。 x轴的长度为10,y轴的长度为12。我希望该图在x轴上的范围为10,在y-axis
中的范围为12。但事实并非如此。我在两个轴上都得到10。我包括一个MWE来重现该问题。
import numpy as np
import plotly.graph_objects as go
data_array = np.empty((10, 12))
for i in range(10):
for j in range(12):
data_array[i, j] = i+j
x = np.linspace(1, 10, 10)
y = np.linspace(1, 12, 12)
fig = go.Figure(data=[go.Surface(z=data_array, x=x, y=y)])
fig.show()
我尝试通过range
设置update_layout
不能解决问题。
import numpy as np
import plotly.graph_objects as go
data_array = np.empty((10, 12))
for i in range(10):
for j in range(12):
data_array[i, j] = i+j
x = np.linspace(1, 10, 10)
y = np.linspace(1, 12, 12)
fig = go.Figure(data=[go.Surface(z=data_array, x=x, y=y)])
fig.update_layout(scene=dict(xaxis=dict(range=[0, 10]),
yaxis=dict(range=[0, 12])))
fig.show()
尽管从现在到12月的y轴范围,在该图的该部分中没有绘制任何内容。 我该如何工作?谢谢。
根据以下答案,我更改了代码。
import numpy as np
import plotly.graph_objects as go
data_array = np.empty((10, 12))
for idx1, i in enumerate(range(0, 50, 5)):
for idx2, j in enumerate(range(0, 24, 2)):
data_array[idx1, idx2] = (i+j) / (50+24)
x = np.linspace(0, 45, 10)
y = np.linspace(0, 22, 12)
fig = go.Figure(data=[go.Surface(z=data_array.T)])
fig.show()
但是轴现在与实际的x和y值不对应。对于x和y轴,图中的值分别从0到9和0到11。如何设置校准?谢谢。
答案 0 :(得分:1)
矩阵data_array
应该换位(x沿列,y沿行)。可以通过传递x
,y
参数来明确设置该限制。代码如下:
import numpy as np
import plotly.graph_objects as go
data_array = np.empty((10, 12))
for idx1, i in enumerate(range(0, 50, 5)):
for idx2, j in enumerate(range(0, 24, 2)):
data_array[idx1, idx2] = (i+j) / (50+24)
x = np.linspace(0, 45, 10)
y = np.linspace(0, 22, 12)
fig = go.Figure(data=[go.Surface(z=data_array.T, x=x, y=y)])
fig.show()
我目前无法保存带有标签在最后位置的图像。获得的图像如下: