【问题标题】:Matplotlib: fixed boundaries on a colorbar of a polar contour plotMatplotlib:极坐标图颜色条上的固定边界
【发布时间】:2012-08-15 04:47:35
【问题描述】:

正如标题中所说,我正在尝试修复极坐标图的颜色条值(vmin=-3 和 vmax=+3)。我要生成几十个这样的图表,颜色条的自动缩放让比较变得非常困难。

绘图本身由以下代码生成:

fig, ax = subplots(subplot_kw=dict(projection='polar'))
cax = ax.contourf(thetas, r, values, 130)
cb1 = fig.colorbar(cax)

我已经经历了http://matplotlib.sourceforge.org 几个小时,但仍然没有找到解决方案。我会指出我正确的方向。

【问题讨论】:

    标签: python matplotlib contour colorbar


    【解决方案1】:

    您可以通过自己传递等高线级别来做到这一点。

    不要仅仅尝试设置 vmin=3、vmax=3,而是在 vmin 和 vmax 之间选择 130 个值,这样它们对于所有图表都是相同的,而与数据范围无关。

    试试:

    contour_levels = arange(-3, 3, 0.05)
    
    fig, ax = subplots(subplot_kw=dict(projection='polar'))
    cax = ax.contourf(thetas, r, values, contour_levels)
    cb1 = fig.colorbar(cax)
    

    【讨论】:

    • 首先,感谢您的努力。不幸的是,添加那行代码什么也没做。有时我的数据会大于 3 或小于 -3。我无法理解您的想法背后的动机。我的数据集是 800 点。对于我拥有的每个点(θ,r,值)。 800 个点的值有时会超出范围 [-3,3],有时会在 [-0.1,0.1] 范围内。
    • 我加了一条线,改了中间线。您需要设置轮廓级别,并将其传递给轮廓而不是 130。通过显式传入轮廓级别,您将确保颜色条始终覆盖这些级别,而不仅仅是从数据的最小值到最大值。
    • 我错过了这个变化。做到了。非常感谢您的帮助!
    【解决方案2】:

    另一种解决方案可能是遵循this response 中使用的逻辑来解决关于设置颜色条的最小值和最大值的类似问题。主要的收获是使用set_clim(self, vmin=None, vmax=None)。在这个问题的上下文中,以下其中一项可能有效:

    fig, ax = subplots(subplot_kw=dict(projection='polar'))
    cax = ax.contourf(thetas, r, values, vmin=-3, vmax=3)
    cb1 = fig.colorbar(cax)
    

    cb1.set_clim(vmin=-3, vmax=3)
    

    This answer 与此类似,但解决了对多个图表使用相同颜色条最小值/最大值的必要条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2014-05-15
      • 2015-11-03
      • 2018-06-04
      • 2019-08-29
      • 2017-05-18
      • 2013-01-06
      相关资源
      最近更新 更多