【问题标题】:matplotlib colorbar minor ticks color and number of minor ticksmatplotlib colorbar 次要刻度颜色和次要刻度数
【发布时间】:2018-06-03 00:26:55
【问题描述】:

我有一个包含颜色条的 matplotlib (v2.1.1) 图。当绘制在具有白色背景的图形上时,我得到一个颜色条,如所附图像之一所示。这很好(虽然我很想知道如何设置次要刻度的数量)。

但是,当我使用 fig.patch.set_facecolor(back_color)back_color = 'black' 将背景设置为黑色时,我得到了一个彩条,它缺少小刻度和顶部的乘数。我已经手动更改了 y 刻度标签的颜色,但不知道如何更改次要刻度或乘数颜色。

[编辑] 好的,这是一个说明问题的代码。我解决了次要刻度颜色问题,这让我(按优先级顺序)乘数颜色和次要刻度的数量。代码如下,将背景变量从0改为1即可查看乘数。

import matplotlib.pyplot as plt

background = 0
if background == 0:
  back_color='black'
  fore_color='white'
else:
  back_color='white'
  fore_color='black'
fig, ax = plt.subplots()
fig.patch.set_facecolor(back_color)
im = ax.imshow([[1e5,2e5],[0.1e5,1e5]])
ax.axis( 'off' )  # don't show the axes ticks/lines/etc. associated with the image
cb = plt.colorbar(im)
cb.formatter.set_scientific(True)
cb.formatter.set_powerlimits((0,0))
cbytick_obj = plt.getp(cb.ax, 'yticklabels' ) #Set y tick label color
plt.setp(cbytick_obj, color=fore_color)
cb.ax.tick_params(which = 'minor', length = 2, color = fore_color )
cb.ax.tick_params(which = 'major', length = 4, color = fore_color )
cb.ax.minorticks_on()
cb.update_ticks()
plt.show()

【问题讨论】:

  • 一个有用的开始通常是一个最小的代码,例如我没有得到小的滴答声......
  • 刚刚意识到评论有 400 个字符的限制。最小示例代码如下
  • 哎哟!我的意思是我已经编辑了问题以包含代码....
  • 请对每个问题提出一个问题。对于次要刻度的数量,请使用例如cb.ax.yaxis.set_minor_locator(matplotlib.ticker.AutoMinorLocator(10)),但是您可以通过搜索很容易地找到它 - 无需一次将一个问题与多个问题混为一谈。
  • 对问题数的看法。事实上,我已经找到了 AutoMinorLocator,但在我的代码中将它放在 cb.ax.minorticks_on() 行之前。似乎 Minorticks_on() 函数将刻度数重置为自动。摆脱那条线并使用 AutoMinorLocator 仅适用。感谢您引导我回到正确的道路上。

标签: python matplotlib colorbar


【解决方案1】:

您可以使用rcParams 设置所需的颜色。

import matplotlib.pyplot as plt

background = 0
if background == 0:
  back_color='black'
  fore_color='white'
else:
  back_color='white'
  fore_color='black'

plt.rcParams["text.color"] = fore_color
plt.rcParams["axes.labelcolor"] = fore_color
plt.rcParams["xtick.color"] =  fore_color
plt.rcParams["ytick.color"] = fore_color

fig, ax = plt.subplots()
fig.patch.set_facecolor(back_color)
im = ax.imshow([[1e5,2e5],[0.1e5,1e5]])
ax.axis( 'off' )  # don't show the axes ticks/lines/etc. associated with the image
cb = plt.colorbar(im)
cb.formatter.set_scientific(True)
cb.formatter.set_powerlimits((0,0))

cb.ax.minorticks_on()
cb.update_ticks()
plt.show()

另请注意,matplotlib 具有 dark_background 样式,这似乎几乎可以完成您尝试手动完成的工作。

import matplotlib.pyplot as plt

background = 0
if background == 0:
    plt.style.use("dark_background")

fig, ax = plt.subplots()

im = ax.imshow([[1e5,2e5],[0.1e5,1e5]])
ax.axis( 'off' )
cb = plt.colorbar(im)
cb.formatter.set_scientific(True)
cb.formatter.set_powerlimits((0,0))

cb.ax.minorticks_on()
cb.update_ticks()
plt.show()

【讨论】:

  • 太好了,非常感谢!对“dark_background”很感兴趣,我对此一无所知。我在这里的地块中使用黑色背景,但是我希望能够设置任何前景色/背景色组合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
相关资源
最近更新 更多