Matplotlib 如何在垂直绘图上使用pyplot fill_?
假设有一个图有两个边缘图。如何将Matplotlib 如何在垂直绘图上使用pyplot fill_?,matplotlib,fill,Matplotlib,Fill,假设有一个图有两个边缘图。如何将fill\u-between用于垂直绘图 from keras.datasets import mnist import matplotlib.pylab as plt from matplotlib.ticker import NullFormatter, NullLocator, MultipleLocator from scipy import stats %matplotlib inline plt.rcParams["figure.figsize"] =
fill\u-between
用于垂直绘图
from keras.datasets import mnist
import matplotlib.pylab as plt
from matplotlib.ticker import NullFormatter, NullLocator, MultipleLocator
from scipy import stats
%matplotlib inline
plt.rcParams["figure.figsize"] = [10, 10]
(x_train, y_train), (x_test, y_test) = mnist.load_data()
image = x_train[21]
xi = 0.2; yi = 0.2; wi = 0.7; hi = 0.7 # image
xc = 0.9; yc = 0.2; wc = 0.05; hc = 0.7 # colorbar
xh = 0.2; yh = 0.0; wh = 0.7; hh = 0.2 # horizontal plot
xv = 0.0; yv = 0.2; wv = 0.2; hv = 0.7 # vertical plot
ax_i = plt.axes((xi, yi, wi, hi))
ax_h = plt.axes((xh, yh, wh, hh))
ax_v = plt.axes((xv, yv, wv, hv))
ax_c = plt.axes((xc, yc, wc, hc))
ax_i.xaxis.set_major_formatter(NullFormatter())
ax_i.yaxis.set_major_formatter(NullFormatter())
ax_h.yaxis.set_major_formatter(NullFormatter())
ax_v.xaxis.set_major_formatter(NullFormatter())
plt.axes(ax_i)
plt.imshow(image, aspect='auto', cmap="binary")
ax_h.plot(list(range(0, 28)), image.sum(axis=0), '-k', drawstyle='steps')
#ax_h.plot(list(range(0, 28)), image.sum(axis=0) + 10 * stats.sem(image, axis=0) / 2, '-k', drawstyle='steps', color='red')
#ax_h.plot(list(range(0, 28)), image.sum(axis=0) - 10 * stats.sem(image, axis=0) / 2, '-k', drawstyle='steps', color='red')
ax_h.fill_between(
list(range(0, 28)),
image.sum(axis=0) + 10 * stats.sem(image, axis=0) / 2,
image.sum(axis=0) - 10 * stats.sem(image, axis=0) / 2,
step = 'pre',
facecolor = 'red',
alpha = 0.5
)
ax_h.set_xlim(-1, 27)
ax_v.plot(image.sum(axis=1), list(range(0, 28)), '-k', drawstyle='steps')
#ax_v.plot(image.sum(axis=1) + 10 * stats.sem(image, axis=1) / 2, list(range(0, 28)), '-k', drawstyle='steps', color='red')
#ax_v.plot(image.sum(axis=1) - 10 * stats.sem(image, axis=1) / 2, list(range(0, 28)), '-k', drawstyle='steps', color='red')
ax_v.fill_between(
image.sum(axis=1) + 10 * stats.sem(image, axis=1) / 2,
image.sum(axis=1) - 10 * stats.sem(image, axis=1) / 2,
list(range(0, 28)),
step = 'pre',
facecolor = 'red',
alpha = 0.5
)
ax_v.set_ylim(0, 28)
cb = plt.colorbar(cax=ax_c)
cb.set_label('intensity')
#ax_i.set_title('input')
#ax_h.set_xlabel('${x}$')
ax_h.set_ylabel('intensity')
ax_h.yaxis.set_label_position('right')
#ax_v.set_ylabel('${y}$')
ax_v.set_xlabel('intensity')
ax_v.xaxis.set_label_position('top')
plt.show()
编辑:根据Loic和Jody Klymak的建议得出了解决方案:
ax_v.fill_betweenx(
list(range(1, 29)),
image.sum(axis=1) + 10 * stats.sem(image, axis=1) / 2,
image.sum(axis=1) - 10 * stats.sem(image, axis=1) / 2,
step = 'pre',
facecolor = 'red',
alpha = 0.5
)
我不太清楚你的问题。您是否正在寻找相同的填充功能,但用于反向轴 如果是,您可以查看:
matplotlib.pyplot.fill_betweenx(y,x1,x2=0,其中=None,step=None,interpolate=False,*,data=None,**kwargs)
嘿,谢谢你的建议。这将导致一个解决方案。:)魔术,非常感谢你的建议。这将导致一个解决方案。:)我不知道反向轴的术语。