【问题标题】:matplotlib contour plot with lognorm - colorbar levels带有 lognorm 的 matplotlib 等高线图 - 颜色条级别
【发布时间】:2013-07-30 15:50:16
【问题描述】:

我正在尝试制作具有已定义级别和对数范数的等高线图。下面是一个例子:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm
delta = 0.025

x = y = np.arange(0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = plt.mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = plt.mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10 * (Z1* Z2)

fig=plt.figure()
ax1 = fig.add_subplot(111)
lvls = np.logspace(-4,0,20)
CF = ax1.contourf(X,Y,Z,
         norm = LogNorm(),
         levels = lvls
        )
CS = ax1.contour(X,Y,Z,
         norm = LogNorm(),
         colors = 'k',
         levels = lvls
        )
cbar = plt.colorbar(CF, ticks=lvls, format='%.4f')
plt.show()

我的问题是:
级别应采用以下格式编写:'1x10^-4', '1.6x10^-4', ... 在不手动指定每个级别的情况下如何执行此操作?

我在 Windows 7 上使用 python 2.7.3 和 matplotlib 1.1.1。

【问题讨论】:

  • 试试看herehere
  • 取决于您希望如何标记级别,检查this answer
  • 感谢您的回答。这样就可以解决问题 1。您对问题 2 也有想法吗?
  • 您应该在每个线程中问一个问题。请接受您第一个问题的现有答案,编辑此问题以删除第二个问题,然后打开一个新问题来提问。

标签: python numpy matplotlib contour colorbar


【解决方案1】:

来自here,我找到了一种似乎适合您的问题的方法:

from matplotlib.ticker import LogFormatter
l_f = LogFormatter(10, labelOnlyBase=False)
cbar = plt.colorbar(CF, ticks=lvls, format=l_f)

这将给出:

请注意,刻度之间的间距确实是对数刻度...

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2017-12-08
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多