Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Matplotlib中使用子图时如何控制颜色栏的位置_Python_Matplotlib - Fatal编程技术网

Python 在Matplotlib中使用子图时如何控制颜色栏的位置

Python 在Matplotlib中使用子图时如何控制颜色栏的位置,python,matplotlib,Python,Matplotlib,我正试图使用Matplotlib绘制一个时间序列及其光谱图和相关的色条 以下是一个MCVE: import numpy as np import matplotlib.pyplot as plt import scipy.signal as scignal import random array=np.random.random(10000) t,f,Sxx=scignal.spectrogram(array,fs=100) plt.subplot(211) plt.plot(array)

我正试图使用Matplotlib绘制一个时间序列及其光谱图和相关的色条

以下是一个MCVE:

import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as scignal
import random

array=np.random.random(10000)
t,f,Sxx=scignal.spectrogram(array,fs=100)

plt.subplot(211)
plt.plot(array)
plt.subplot(212)
plt.pcolormesh(Sxx)
plt.colorbar()
此代码生成下图:

但是,我希望两个子地块的大小相同:

我曾想过使用
plt.colorbar(orientation='horizontal')
更改颜色条的方向,但我对结果不满意,因为子批次最终没有相同的高度


任何帮助都将不胜感激

发生这种情况的原因是
plt.colorbar
创建了一个新的
对象,该对象从较低的
中“窃取”空间(这就是制作水平色条也会影响两个原始绘图的原因)

有几种方法可以解决这个问题;一种方法是创建一个具有四个
轴的
图形
,将大部分空间分配给左边的轴,并使其中一个轴不可见:

import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as scignal
import random

array = np.random.random(10000)
t, f, Sxx = scignal.spectrogram(array,fs=100)

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(5, 6), gridspec_kw={'width_ratios': [19, 1]})
(ax1, blank), (ax2, ax_cb) = axes
blank.set_visible(False)
ax1.plot(array)
m = ax2.pcolormesh(Sxx)
fig.colorbar(m, cax=ax_cb)

太好了!感谢您的快速回复,gmds!你的解决方法正是我想要的!创建一个2乘2的网格对我来说很有用。