python - 在 matplotlib 中使用 SymLogNorm 在颜色条上进行等距刻度

标签 python matplotlib scale colorbar

我想使用 SymLogNorm() 强制我的颜色条的刻度在颜色条上(不是在它们的值中)等距分布| ,例如它们处于默认模式 LogNorm() .如果不手动操作,我怎么能做到这一点,即不执行以下操作:

plt.colorbar(ticks=[vmin, value1, ... , vmax])

我想要的基本上是与使用 LogNorm() 时相同的刻度。 (震级)。以下是我的代码的基本工作方式:

import ...
...
y    = np.loadtxt('my_data.dat')
vmin_a = y[0]
vmax_a = y[1]

norm_a = SymLogNorm(linthresh=0.5, linscale=0.03, vmin=vmin_a, vmax=vmax_a)

plt.figure(1)
plt.scatter(x[0], x[1], marker='.', s=7, linewidths=0, c=x[3], cmap= \
          plt.get_cmap('RdBu_r'), norm=norm_rs)
plt.xlabel(xax)    
plt.ylabel(yax)    
plt.colorbar()

pl.xlim([vmin_a, vmax_a])
pl.ylim([vmin_a, vmax_a])

plt.show()

我认为下图很好地解释了我不想要它的原因,即它的实际外观: enter image description here 我感谢任何提示。 问候

最佳答案

据我所知,必须使用 SymLogNorm 手动设置刻度。我通过定义解决了我的问题:

tick_locations_plot=( [vmin]
                  + [-(10.0**x) for x in range(minlog-1,-logthresh-1,-1)]
                  + [0.0]
                  + [(10.0**x) for x in range(-logthresh,maxlog-1)]
                  + [vmax] )

在哪里

maxlog=int(np.ceil( np.log10(vmax) ))
minlog=int(np.ceil( np.log10(-vmin) ))

然后使用

plt.colorbar(ticks=tick_locations)

做我正在寻找的东西。

关于python - 在 matplotlib 中使用 SymLogNorm 在颜色条上进行等距刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768117/

相关文章:

python - yapsy 无法正确加载插件

python - 即使指定了其他 gpu,skflow 也会在 gpu0 中分配内存

python - heapq.merge 是否可以与 Iterator 类一起使用?

python - 无法让 matplotlib 生成绘图

python - 立即显示 matplotlib 中图形的内容

android - 保存使用相机 Intent 制作的图像

python - PyAutoGUIlocateOnScreen 方法中 minSearchTime 参数的目标是什么?

python - 如何显示存储在 Pandas 数据框中的图像?

ios - Box2D 缩放说明

css - 如何在使用 onClick 动态更改图像时将图像缩放到现有 div 的大小?