如何自定义python matplotlib colorbar

时间:2019-01-07 21:20:26

标签: python matplotlib colorbar

我在python中用plot生成了colorbar
这是我当前正在使用的代码:

import openmc
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import make_axes_locatable

sp1 = openmc.StatePoint('statepoint.550-20.h5')
tally1 = sp1.tallies[1]
flux1 = tally1.mean.ravel()
y = np.reshape(flux1, (200,200))

ax = plt.subplot(111)
Z = ax.imshow(y, cmap=plt.cm.viridis)

divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="10%", pad=0.05)

plt.colorbar(Z, cax=cax)
plt.show()

这将生成如下图所示: enter image description here

现在,我的问题是如何自定义颜色栏?

我想做的是为maximum设置minimum0.000000的值(例如,将0.000050设置为color scale),我希望该图显示颜色图我定义比例时,不是从数组值y自动生成的比例。

我正在从Mac终端运行python。

感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

通常,plt.clim(0.000000, 0.000050)应该可以工作。

答案 1 :(得分:0)

我已经解决了。

import openmc
sp1 = openmc.StatePoint('statepoint.550-20.h5')
tally1 = sp1.tallies[1]
flux1 = tally1.mean.ravel()
import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np
y = np.reshape(flux1, (200,200)) 
ax = plt.subplot(111)
norm = matplotlib.colors.Normalize(vmin=0.000000,vmax=0.000025)
Z = ax.imshow(y, cmap=plt.cm.viridis, norm=norm )
plt.colorbar(Z)
plt.show()

现在我在刻度中有(0.00000, 0.00001, 0.00002, 0.00003, 0.00004, 0.00005)标签,并且绘图根据刻度颜色值显示。不过,我仍然需要一个有关如何将标签号从(0.00000, 0.000005, 0.00001, 0.000015, 0.00002, 0.000025, 0.00003, 0.000035, 0.00004, 0.000045, 0.00005)增加到11的指南。谢谢。