Estoy tratando de dibujar un gráfico con bibliotecas de gráficos y quiero establecer un ancho específico de cada línea.
Este es mi código.
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
)
)
Pero plantea este error.
Valor no válido del tipo 'builtins.list' recibido para la propiedad 'ancho' de scatter3d.line Valor recibido: [3, 6]
La propiedad 'ancho' es un número y puede especificarse como: - Un int o flotante en el intervalo [0, inf]
Entonces, ¿hay alguna manera de establecer el ancho específico de cada línea?
Gracias.
3 respuestas
Tendrá que agregar trazas individuales para que su conjunto de datos haga esto ya que line=dict(width)
solo toma un solo argumento y no una matriz de algún tipo. Y eso puede ser un mucho trabajo para conjuntos de datos más grandes . Pero si cambia su conjunto de datos de lists a una lista de listas , puede tener en cuenta aún más puntos de datos . Entonces, con un poco de manipulación de datos puede convertir esto:
x_link = [125, 257, None, 125, 787, None]
y_link = [383, 588, None, 383, 212, None]
z_link = [65, 85, None, 65, 526, None]
En esto:
x_link = [[125, 257, None], [125, 787, None]]
y_link = [[383, 588, None], [383, 212, None]]
z_link = [[65, 85, None], [65, 526, None]]
Y ejecuta este código:
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()
Para obtener esta trama:
Debe realizar múltiples seguimientos y especificar el ancho de cada uno:
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])
Esta es la documentación de lo que está intentando hacer https://plot.ly/python/ referencia / # línea de dispersión
La línea solo acepta un valor único para el ancho, no una matriz de valores, a diferencia de lo que le ha dado.
Intente pasar solo 6 y no debería dar un error.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.