【问题标题】:making colorbar with scientific notation in seaborn在seaborn中用科学记数法制作颜色条
【发布时间】:2016-05-26 22:20:52
【问题描述】:

我正在 seaborn 中绘制以下热图。数据帧是从下面读取的。 csv 文件:https://www.dropbox.com/s/mb3wc8mmis0m7g6/df_trans.csv?dl=0

ax = sns.heatmap(df, linewidths=.1, linecolor='gray', cmap=sns.cubehelix_palette(light=1, as_cmap=True))
locs, labels = plt.xticks()
plt.setp(labels, rotation=0)
locs, labels = plt.yticks()
plt.setp(labels, rotation=0)

如何修改颜色条编号,使它们 160000 显示为 1.6,颜色条顶部为 10^5。我知道在 matplotlib 中这样做很热,但在 seaborn 中却不行:

import matplotlib.ticker as tkr
formatter = tkr.ScalarFormatter(useMathText=True)
formatter.set_scientific(True)
ax.yaxis.set_major_formatter(formatter)

【问题讨论】:

  • 什么是tkr?制作一个 MCVE 会更有帮助。
  • 感谢@mwaskom 提供了一个很棒的库,tkrimport matplotlib.ticker as tkr。添加用于构建此图的数据框

标签: python pandas matplotlib seaborn


【解决方案1】:

通过cbar_kws 传递您的formatter 对象:

import numpy as np
import seaborn as sns
import matplotlib.ticker as tkr

formatter = tkr.ScalarFormatter(useMathText=True)
formatter.set_scientific(True)
formatter.set_powerlimits((-2, 2))

x = np.exp(np.random.uniform(size=(10, 10)) * 10)
sns.heatmap(x, cbar_kws={"format": formatter})

【讨论】:

    【解决方案2】:

    使用 seaborn,您可以在创建热图时通过 cbar_kws 参数将格式化程序传递给颜色条。

    以 seaborn 文档为例...

    import numpy as np; np.random.seed(0)
    import seaborn as sns; sns.set()
    
    import matplotlib.ticker as tkr
    formatter = tkr.ScalarFormatter(useMathText=True)
    formatter.set_scientific(True)
    
    uniform_data = np.random.rand(10, 12) * 100000000
    
    ax = sns.heatmap(uniform_data,
                     cbar_kws={'format':formatter}
                    )
    

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2019-10-24
      • 2021-09-13
      • 2016-02-21
      • 2018-11-17
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多