如何设置特定线条的宽度?

2024-05-15 13:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画一个有图库和 我想设置每行的特定宽度。你知道吗

这是我的密码。你知道吗


x_link = [125, 257, None, 125, 787, None]
y_link = [383, 588, None, 383, 212, None]
z_link = [65, 85, None, 65, 526, None]

link_size = [3,6]

trace1= go.Scatter3d(
                x = x_link, 
                y = y_link,
                z = z_link,
                line=dict(
                    color='#0061ff',
                    width=link_size
                )
)

但这也带来了这个错误。你知道吗

Invalid value of type 'builtins.list' received for the 'width' property of scatter3d.line Received value: [3, 6]

The 'width' property is a number and may be specified as: - An int or float in the interval [0, inf]

那么,有没有办法设置每行的具体宽度呢?你知道吗

谢谢你。你知道吗


Tags: ofthenonego密码size宽度value
3条回答

您必须为数据集添加单个跟踪,因为line=dict(width)只接受一个参数,而不是某种数组。对于更大的数据集来说,这可能是一个很大的工作。但如果您将数据集从列表更改为列表,则可以考虑更多的数据点。因此,通过一点数据操作,您可以改变这一点:

x_link = [125, 257, None, 125, 787, None]
y_link = [383, 588, None, 383, 212, None]
z_link = [65, 85, None, 65, 526, None]

对此:

x_link = [[125, 257, None], [125, 787, None]]
y_link = [[383, 588, None], [383, 212, None]]
z_link = [[65, 85, None], [65, 526, None]]

并运行以下代码:

import plotly.graph_objects as go
from plotly.offline import init_notebook_mode, iplot

x_link = [[125, 257, None], [125, 787, None]]
y_link = [[383, 588, None], [383, 212, None]]
z_link = [[65, 85, None], [65, 526, None]]

# figure formatting
colors=['red', 'green']
link_size = [2,12]

# make multiple traces
traces={}
for i in range(0, len(x_link)):
    traces['trace_' + str(i)]=go.Scatter3d(x = x_link[i], 
                                           y = y_link[i],
                                           z = z_link[i],
                                           line=dict(
                                                color=colors[i],
                                                width=link_size[i]))
data=list(traces.values())

# build and plot figure
fig=go.Figure(data)
fig.show()

要获得此绘图:

enter image description here

您需要创建多个记录道并为每个记录道指定宽度:

x_link = [125, 257, None, 125, 787, None]
y_link = [383, 588, None, 383, 212, None]
z_link = [65, 85, None, 65, 526, None]

link_size = [3,6]

trace1= go.Scatter3d(
                x = x_link[:3], 
                y = y_link[:3],
                z = z_link[:3],
                line=dict(
                    color='green',
                    width=link_size[0]
                )
)

trace2= go.Scatter3d(
                x = x_link[3:], 
                y = y_link[3:],
                z = z_link[3:],
                line=dict(
                    color='red',
                    width=link_size[1]
                )
)

fig = go.Figure(data=[trace1, trace2])

这是您正在尝试执行的操作的文档https://plot.ly/python/reference/#scatter-line

行只接受一个宽度值,而不接受一个值数组,不像您给定的那样。你知道吗

尝试只传入6,它不会给出错误。你知道吗

相关问题 更多 >