如何在 Plotly 中增加平面的大小

得到以下代码


import pandas as pd

import plotly.graph_objects as go

import numpy as np


df = pd.read_csv('https://raw.githubusercontent.com/tiago-peres/immersion/master/Platforms_dataset.csv')


fig = px.scatter_3d(df, x='Functionality ', y='Accessibility', z='Immersion', color='Platforms')


grey = [[0,'#C0C0C0'],[1,'#C0C0C0']]


zero_pt = pd.Series([0])

z = zero_pt.append(df['Immersion'], ignore_index = True).reset_index(drop = True)

y = zero_pt.append(df['Accessibility'], ignore_index = True).reset_index(drop = True)

x = zero_pt.append(df['Functionality '], ignore_index = True).reset_index(drop = True)


length_data = len(z)

z_plane_pos = 66.5*np.ones((length_data,length_data))


fig.add_trace(go.Surface(x=x, y=y, z=z_plane_pos, colorscale=grey,  showscale=False))

fig.add_trace(go.Surface(x=x.apply(lambda x: 15.69), y=y, z = np.array([z]*length_data), colorscale= grey, showscale=False))

fig.add_trace(go.Surface(x=x, y= y.apply(lambda x: 55), z =  np.array([z]*length_data).transpose(), colorscale=grey, showscale=False))


fig.update_layout(scene = dict(

        xaxis = dict(nticks=4, range=[0,31.38],),

        yaxis = dict(nticks=4, range=[0,110],),

        zaxis = dict(nticks=4, range=[0,133],),),

        legend_orientation="h",margin=dict(l=0, r=0, b=0, t=0))

可以在产生以下输出的 Google Colab 中打开

http://img4.mukewang.com/63e1e8410001b4c904000345.jpg

如您所见,平面没有填满整个轴空间,它们应该符合轴范围。换句话说,飞机

  • z=66.5 - 应该存在于 x 的 [0, 31.38] 和 y 的 [0, 110] 之间

  • x=15.59 - 应该存在于 y 中的 [0, 110] 和 z 中的 [0, 133] 之间

  • y=55 - 应该存在于 x 的 [0, 31.38] 和 z 的 [0, 133] 之间

那怎么办?


MM们
浏览 133回答 1
1回答

慕雪6442864

问题是我绘制的阵列形状不正确。通过适当地拆分创建输入数组和绘图的位,能够发现这一点,并因此制作了正确大小和适当内容的输入数组(用于绘图)。import plotly.express as pximport pandas as pdimport plotly.graph_objects as goimport numpy as npdf = pd.read_csv('https://raw.githubusercontent.com/tiago-peres/immersion/master/Platforms_dataset.csv')zero_pt = pd.Series([0])z1 = np.arange(0, 134, 1)y1 = np.arange(0, 111, 1)x1 = np.arange(0, 32.38, 1)z = zero_pt.append(df['Immersion'], ignore_index = True).reset_index(drop = True)y = zero_pt.append(df['Accessibility'], ignore_index = True).reset_index(drop = True)x = zero_pt.append(df['Functionality '], ignore_index = True).reset_index(drop = True)test1 = pd.Series([133])test = z.append(test1)length_data1 = len(z1)z_plane_pos = 66.5*np.ones((length_data1,length_data1))length_data2 = len(y1)y_plane_pos = 55*np.ones((length_data2,length_data2))length_data3 = len(x1)x_plane_pos = 15.69*np.ones((length_data3,length_data3))xvals = x.apply(lambda x: 15.69)xvals2 = x1yvals = y1yvals2 = y.apply(lambda x: 55)zvals = np.zeros((len(yvals), len(xvals)))zvals[:, -1] = 133 #  np.array([test]*length_data2)zvals2 = np.zeros((len(yvals2), len(xvals2)))zvals2[-1, :] = 133fig = px.scatter_3d(df, x='Functionality ', y='Accessibility', z='Immersion', color='Platforms')grey = [[0,'#C0C0C0'],[1,'#C0C0C0']]fig.add_trace(go.Surface(x=x1, y=y1, z=z_plane_pos, colorscale=grey,  showscale=False))fig.add_trace(go.Surface(x=xvals, y=yvals, z = zvals, colorscale= grey, showscale=False))fig.add_trace(go.Surface(x=xvals2, y=yvals2, z = zvals2, colorscale=grey, showscale=False))fig.update_layout(scene = dict(        xaxis = dict(nticks=4, range=[0,31.38],),        yaxis = dict(nticks=4, range=[0,110],),        zaxis = dict(nticks=4, range=[0,133],),),        legend_orientation="h",margin=dict(l=0, r=0, b=0, t=0))看这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python