title: Correlation Heatmap in Plotly
body: <p>I have created a lower triangular correlation heatmap using Seaborn that I loved. Now trying to create the same using Plotly. Unfortunately, not being able to fine tune it like I did with Seaborn.</p>
  <pre><code>names = ['U', 'V', 'W', 'X', 'Y', 'Z']
  r = pd.DataFrame(index = names, columns = names)
  r['U'] = np.array([1.0,   0.53,    0.26,  0.63, 0.52, 0.65] )
  r['V'] = np.array([0.53,   1.0,   -0.17, 0.83, 1, 0.85])
  r['W'] = np.array([0.26,  -0.17,    1.0,  0.04, -0.15, 0.09])
  r['X'] = np.array([0.63, 0.83, 0.04, 1, 0.83, 0.80])
  r['Y'] = np.array([0.52, 1, -0.15, 0.83, 1, 0.86])
  r['Z'] = np.array([0.65, 0.85, 0.09, 0.80, 0.86, 1.0])
  
  print(r)
  </code></pre>
  <p><a href="https://i.stack.imgur.com/cylW8.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/cylW8.png" alt="enter image description here" /></a></p>
  <pre><code>import seaborn as sns
  
  # sns.set_theme(style=&quot;white&quot;)
  
  mask = np.triu(np.ones_like(r, dtype=bool))
  
  # Set up the matplotlib figure
  f, ax = plt.subplots(figsize=(11, 9))
  
  # Generate a custom diverging colormap
  cmap = sns.diverging_palette(230, 20, n=256, as_cmap=True)
  
  # Draw the heatmap with the mask and correct aspect ratio
  sns.heatmap(r, 
              mask=mask, 
              cmap=cmap, 
              vmax=1, 
              vmin = -.25,
              center=0,
              square=True, 
              linewidths=.5,
              annot = True,
              fmt='.2f', 
              annot_kws={'size': 10},
              cbar_kws={&quot;shrink&quot;: .75})
  
  plt.title('Asset Correlation Matrix')
  plt.tight_layout()
  ax.tick_params(axis = 'x', labelsize = 8)
  ax.set_ylim(len(corr)+1, -1)
  # plt.savefig('corrTax.png', dpi = 600)
  
  plt.show()
  
  </code></pre>
  <p><a href="https://i.stack.imgur.com/o9W7p.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/o9W7p.png" alt="enter image description here" /></a></p>
  <p>I am trying to create this using Plotly. Here is what I have able to do so far.</p>
  <pre><code>mask = np.triu(np.ones_like(r, dtype=bool))
  rLT = r.mask(mask)
  
  heat = go.Heatmap(
      z = rLT,
      x = rLT.columns.values,
      y = rLT.columns.values,
      zmin = - 0.25, # Sets the lower bound of the color domain
      zmax = 1,
      xgap = 1, # Sets the horizontal gap (in pixels) between bricks
      ygap = 1,
      colorscale = 'RdBu'
  )
  
  title = 'Asset Correlation Matrix'
  
  layout = go.Layout(
      title_text=title, 
      title_x=0.5, 
      width=600, 
      height=600,
      xaxis_showgrid=False,
      yaxis_showgrid=False,
      yaxis_autorange='reversed'
  )
  
  fig=go.Figure(data=[heat], layout=layout)
  fig.show()
  </code></pre>
  <p><a href="https://i.stack.imgur.com/VxNvm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VxNvm.png" alt="enter image description here" /></a></p>
  <ul>
  <li>Seaborn colormap that I was create, I want to create something similar in Plotly. How can I do that?</li>
  <li>I was able to control the axis label sizes.</li>
  <li>Would love to put values into each box (<code>annot</code> option in seaborn), with rounding option</li>
  </ul>