title: Python + Plotly: How to draw lines with multiple widths
body: <p>I wrote a program which reads a set of names, then it makes a graph.</p>
  
  <p>The graph lines should be thinner or thicker based on a weight array.</p>
  
  <p>My program draws+100 edges in the graph, so I need help:</p>
  
  <p><code>edge_x</code> and <code>edge_y</code> contains the information of the edge. the weight array is called <code>weight</code>.</p>
  
  <p>This is the part of my code that draw the lines</p>
  
  <pre><code>edge_trace = go.Scatter(
      x=edge_x, y=edge_y,
      line=dict(width=0.8, color='#888'),  ### doesnt accept array width
      hoverinfo='none',
      mode='lines'
  )
  </code></pre>
  
  <p>also, those lines should be in a scale of color green for example, deppending the weight.
  I can't add one by one the lines in code because it should work for differente entrys. }</p>
  
  <p>How can I do this?</p>
  
  <p>MWE: </p>
  
  <pre><code>import plotly.graph_objects as go
  import networkx as nx
  G = nx.random_geometric_graph(20, 0.125)
  
  edge_x = []
  edge_y = []
  for edge in G.edges():
      x0, y0 = G.nodes[edge[0]]['pos']
      x1, y1 = G.nodes[edge[1]]['pos']
      edge_x.append(x0)
      edge_x.append(x1)
      edge_x.append(None)
      edge_y.append(y0)
      edge_y.append(y1)
      edge_y.append(None)
  
  edge_trace = go.Scatter(
      x=edge_x, y=edge_y,
      line=dict(width=0.5, color='#888'),
      hoverinfo='none',
      mode='lines')
  
  node_x = []
  node_y = []
  for node in G.nodes():
      x, y = G.nodes[node]['pos']
      node_x.append(x)
      node_y.append(y)
  
  node_trace = go.Scatter(
      x=node_x, y=node_y,
      mode='markers',
      hoverinfo='text',
      marker=dict(
          showscale=True,
          colorscale='YlGnBu',
          reversescale=True,
          color=[],
          size=10,
          colorbar=dict(
              thickness=15,
              title='Node Connections',
              xanchor='left',
              titleside='right'
          ),
          line_width=2))
  fig = go.Figure(data=[edge_trace, node_trace],
               layout=go.Layout(
                  title='&lt;br&gt;Network graph made with Python',
                  titlefont_size=16,
                  showlegend=False,
                  hovermode='closest',
                  margin=dict(b=20,l=5,r=5,t=40),
                  annotations=[ dict(
                      text="Python code: &lt;a href='https://plotly.com/ipython-notebooks/network-graphs/'&gt; https://plotly.com/ipython-notebooks/network-graphs/&lt;/a&gt;",
                      showarrow=False,
                      xref="paper", yref="paper",
                      x=0.005, y=-0.002 ) ],
                  xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),
                  yaxis=dict(showgrid=False, zeroline=False, showticklabels=False))
                  )
  fig.show()
  </code></pre>
  
  <p>actual output for my data entry</p>
  
  <p><a href="https://i.stack.imgur.com/vrckg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vrckg.png" alt="how does it show with a graph"></a></p>
  
  <p>desired output</p>
  
  <p><a href="https://i.stack.imgur.com/CuhO0.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CuhO0.png" alt="how does it should show"></a></p>