text: user15597: From 3 gene lists (lung, nasal, gut), how to make this gene overlap network plot?
  This image is figure 4a from: https://www.nature.com/articles/s41591-020-01227-z
  
  
  user15610: I'm the author of gravis, an open source package for interactive graph visualization in Python.
  
  It can visualize directed and undirected graphs (=having edges with or without arrows) as well as multigraphs (=having more than one edge between a pair of nodes).
  It allows to control visual properties such as node sizes, colors, shapes or edge widths and color with data.
  It recognizes graph objects from various network analysis packages such as NetworkX, igraph, graph-tool and others.
  The output is based on web technologies (HTML/JS/CSS), so it can be viewed in a browser or Jupyter notebook. There is also support for exporting static images (JPG, PNG, SVG).
  It comes with many examples on the documentation site.
  
  Here's a quick attempt to reproduce a part of the figure you've provided:
  import gravis as gv
  import networkx as nx
  
  s1 = 40
  c1 = 'white'
  
  s2 = 20
  c2 = '#ffd703'
  
  s3 = 20
  c3 = 'orange'
  
  s4 = 20
  c4 = 'red'
  
  g = nx.Graph()
  g.add_node('Lung', color=c1, size=s1, border_size=1)
  g.add_node('Nasal', color=c1, size=s1, border_size=1)
  g.add_node('Gut', color=c1, size=s1, border_size=1)
  
  g.add_node('MDFI', color=c2, size=s2)
  g.add_node('LOXL1', color=c2, size=s2)
  g.add_node('CNBP', color=c2, size=s2)
  
  g.add_node('C3', color=c3, size=s3)
  g.add_node('CA2', color=c3, size=s3)
  g.add_node('SEPP1', color=c3, size=s3)
  
  g.add_node('TFF3', color=c4, size=s4)
  g.add_node('PTMA', color=c4, size=s4)
  
  g.add_edge('Lung', 'MDFI')
  g.add_edge('Nasal', 'LOXL1')
  g.add_edge('Gut', 'CNBP')
  
  g.add_edge('Lung', 'C3')
  g.add_edge('Nasal', 'C3')
  
  g.add_edge('Lung', 'CA2')
  g.add_edge('Gut', 'CA2')
  
  g.add_edge('Nasal', 'SEPP1')
  g.add_edge('Gut', 'SEPP1')
  
  g.add_edge('Lung', 'TFF3')
  g.add_edge('Nasal', 'TFF3')
  g.add_edge('Gut', 'TFF3')
  
  g.add_edge('Lung', 'PTMA')
  g.add_edge('Nasal', 'PTMA')
  g.add_edge('Gut', 'PTMA')
  
  gv.d3(g)
  
  Resulting output in a web browser:
  
  I've moved the nodes manually a bit so that the layout resembles the provided image. Once everything looks as intended, a static image can be exported with a single button click on the right-hand side.
  There are many other ways to produce static graph visualizations, e.g. programmatically with other Python libraries mentioned before, or interactively in standalone tools such as Gephi, Cytoscape or Tulip.
  
original_text: 15597: <p>From 3 gene lists (lung, nasal, gut), how to make this gene overlap network plot?</p>
  <p>This image is figure 4a from: <a href="https://www.nature.com/articles/s41591-020-01227-z" rel="nofollow noreferrer">https://www.nature.com/articles/s41591-020-01227-z</a></p>
  <p><a href="https://i.stack.imgur.com/gRYmz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gRYmz.png" alt="gene overlap of 3 gene lists" /></a></p>
   15610: <p>I'm the author of <a href="https://robert-haas.github.io/gravis-docs/" rel="nofollow noreferrer">gravis</a>, an open source package for interactive graph visualization in Python.</p>
  <ul>
  <li>It can visualize directed and undirected graphs (=having edges with or without arrows) as well as multigraphs (=having more than one edge between a pair of nodes).</li>
  <li>It allows to control visual properties such as node sizes, colors, shapes or edge widths and color with data.</li>
  <li>It recognizes graph objects from various network analysis packages such as NetworkX, igraph, graph-tool and others.</li>
  <li>The output is based on web technologies (HTML/JS/CSS), so it can be viewed in a browser or Jupyter notebook. There is also support for exporting static images (JPG, PNG, SVG).</li>
  <li>It comes with many examples on the documentation site.</li>
  </ul>
  <p>Here's a quick attempt to reproduce a part of the figure you've provided:</p>
  <pre><code>import gravis as gv
  import networkx as nx
  
  s1 = 40
  c1 = 'white'
  
  s2 = 20
  c2 = '#ffd703'
  
  s3 = 20
  c3 = 'orange'
  
  s4 = 20
  c4 = 'red'
  
  g = nx.Graph()
  g.add_node('Lung', color=c1, size=s1, border_size=1)
  g.add_node('Nasal', color=c1, size=s1, border_size=1)
  g.add_node('Gut', color=c1, size=s1, border_size=1)
  
  g.add_node('MDFI', color=c2, size=s2)
  g.add_node('LOXL1', color=c2, size=s2)
  g.add_node('CNBP', color=c2, size=s2)
  
  g.add_node('C3', color=c3, size=s3)
  g.add_node('CA2', color=c3, size=s3)
  g.add_node('SEPP1', color=c3, size=s3)
  
  g.add_node('TFF3', color=c4, size=s4)
  g.add_node('PTMA', color=c4, size=s4)
  
  g.add_edge('Lung', 'MDFI')
  g.add_edge('Nasal', 'LOXL1')
  g.add_edge('Gut', 'CNBP')
  
  g.add_edge('Lung', 'C3')
  g.add_edge('Nasal', 'C3')
  
  g.add_edge('Lung', 'CA2')
  g.add_edge('Gut', 'CA2')
  
  g.add_edge('Nasal', 'SEPP1')
  g.add_edge('Gut', 'SEPP1')
  
  g.add_edge('Lung', 'TFF3')
  g.add_edge('Nasal', 'TFF3')
  g.add_edge('Gut', 'TFF3')
  
  g.add_edge('Lung', 'PTMA')
  g.add_edge('Nasal', 'PTMA')
  g.add_edge('Gut', 'PTMA')
  
  gv.d3(g)
  </code></pre>
  <p>Resulting output in a web browser:
  <a href="https://i.stack.imgur.com/PlQqj.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PlQqj.png" alt="gravis example" /></a></p>
  <p>I've moved the nodes manually a bit so that the layout resembles the provided image. Once everything looks as intended, a static image can be exported with a single button click on the right-hand side.</p>
  <p>There are many other ways to produce static graph visualizations, e.g. programmatically with other Python libraries mentioned before, or interactively in standalone tools such as Gephi, Cytoscape or Tulip.</p>
  