为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2023-02-07 13:56:54
得到以下代码import 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')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 中打开如您所见,平面没有填满整个轴空间,它们应该符合轴范围。换句话说,飞机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] 之间那怎么办?
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

问题是我绘制的阵列形状不正确。

通过适当地拆分创建输入数组和绘图的位,能够发现这一点,并因此制作了正确大小和适当内容的输入数组(用于绘图)。

//img1.sycdn.imooc.com//63e1e8560001051d06550424.jpg

import plotly.express as px

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')


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 = x1

yvals = y1

yvals2 = 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, :] = 133


fig = 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))

看这里



查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号