繁体   English   中英

共享轴的matplotlib颜色条和直方图

[英]matplotlib colorbar and histogram with shared axis

我想显示带有imshow的二维np.array以及应该与imshow的直方图共享其轴的各个np.array 但是,这是没有共享轴的尝试。

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

fig, ax = plt.subplots(figsize=(7,10))

data = np.random.normal(0, 0.2, size=(100,100))
cax = ax.imshow(data, interpolation='nearest', cmap=cm.jet)

divider = make_axes_locatable(plt.gca())
axBar = divider.append_axes("bottom", '5%', pad='7%')
axHist = divider.append_axes("bottom", '30%', pad='7%')

cbar = plt.colorbar(cax, cax=axBar, orientation='horizontal')
axHist.hist(np.ndarray.flatten(data), bins=50)

plt.show()

我试图用sharex在参数axHistaxHist = divider.append_axes("bottom", '30%', pad='7%', sharex=axBar)但是这在某种程度上将这个直方图数据: 在此处输入图片说明

除了共享轴x之外,如何修改直方图以采用与颜色图相同的颜色,类似于此处

您可以按bin值为直方图的每个色块着色,而无需sharex:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib.colors import Normalize

fig, ax = plt.subplots(figsize=(7,10))

data = np.random.normal(0, 0.2, size=(100,100))
cax = ax.imshow(data, interpolation='nearest', cmap=cm.jet)

divider = make_axes_locatable(plt.gca())
axBar = divider.append_axes("bottom", '5%', pad='7%')
axHist = divider.append_axes("bottom", '30%', pad='7%')

cbar = plt.colorbar(cax, cax=axBar, orientation='horizontal')

# get hist data
N, bins, patches = axHist.hist(np.ndarray.flatten(data), bins=50)

norm = Normalize(bins.min(), bins.max())
# set a color for every bar (patch) according 
# to bin value from normalized min-max interval
for bin, patch in zip(bins, patches):
    color = cm.jet(norm(bin))
    patch.set_facecolor(color)

plt.show()

在此处输入图片说明

有关更多信息,请查找手册页: https : //matplotlib.org/xkcd/examples/pylab_examples/hist_colormapped.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM