Я пытаюсь построить изображение (используя matplotlib.imshow
) и график рассеяния на одном и том же рисунке. При попытке этого изображения изображение оказывается меньше, чем график рассеяния. Ниже показан небольшой пример кода:
import matplotlib.pyplot as plt
import numpy as np
image = np.random.randint(100,200,(200,200))
x = np.arange(0,10,0.1)
y = np.sin(x)
fig, (ax1, ax2) = plt.subplots(1,2)
ax1.imshow(image)
ax2.scatter(x,y)
plt.show()
Что дает следующий рисунок:
Как я могу получить две подсловы одинаковой высоты? (и, по-видимому, ширина)
Я попытался использовать gridspec
, как показано в this:
fig=plt.figure()
gs=GridSpec(1,2)
ax1=fig.add_subplot(gs[0,0])
ax2=fig.add_subplot(gs[0,1])
ax1.imshow(image)
ax2.scatter(x,y)
Но это дает тот же результат. Я также попытался настроить размеры подзаголовков вручную, используя:
fig = plt.figure()
ax1 = plt.axes([0.05,0.05,0.45,0.9])
ax2 = plt.axes([0.55,0.19,0.45,0.62])
ax1.imshow(image)
ax2.scatter(x,y)
В результате проб и ошибок я могу получить два подзаголовка до нужного размера, хотя любое изменение общего размера фигуры будет означать, что подзаголовки больше не будут иметь одинаковый размер.
Есть ли способ сделать график imshow
и scatter
таким же размером на фигуре без изменения размеров осей вручную?
Я использую Python 2.7 и matplotlib 2.0.0