Библиотек matplotlib разных сюжетных линий размер
мне нужно добавить два подзаголовка к фигуре. Один подзаголовок должен быть примерно в три раза шире второго (той же высоты). Я сделал это с помощью GridSpec
и но я хотел бы сделать это с помощью figure
Так что я могу сохранить в PDF. Я могу настроить первую цифру с помощью figsize
аргумент в конструкторе,но как изменить размер второго участка?
4 ответа:
другой способ-использовать
subplots
функция и передать отношение ширины сgridspec_kw
:import numpy as np import matplotlib.pyplot as plt # generate some data x = np.arange(0, 10, 0.2) y = np.sin(x) # plot it f, (a0, a1) = plt.subplots(1,2, gridspec_kw = {'width_ratios':[3, 1]}) a0.plot(x,y) a1.plot(y,x) f.tight_layout() f.savefig('grid_figure.pdf')
можно использовать
gridspec
иfigure
:import numpy as np import matplotlib.pyplot as plt from matplotlib import gridspec # generate some data x = np.arange(0, 10, 0.2) y = np.sin(x) # plot it fig = plt.figure(figsize=(8, 6)) gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1]) ax0 = plt.subplot(gs[0]) ax0.plot(x, y) ax1 = plt.subplot(gs[1]) ax1.plot(y, x) plt.tight_layout() plt.savefig('grid_figure.pdf')
Я
pyplot
' saxes
объект для ручной настройки размеров без использованияGridSpec
:import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.2) y = np.sin(x) # definitions for the axes left, width = 0.07, 0.65 bottom, height = 0.1, .8 bottom_h = left_h = left+width+0.02 rect_cones = [left, bottom, width, height] rect_box = [left_h, bottom, 0.17, height] fig = plt.figure() cones = plt.axes(rect_cones) box = plt.axes(rect_box) cones.plot(x, y) box.plot(y, x) plt.show()
вероятно, самый простой способ-это использование
subplot2grid
, описано в настройка местоположения подзаголовка с помощью GridSpec.ax = plt.subplot2grid((2, 2), (0, 0))
равна
import matplotlib.gridspec as gridspec gs = gridspec.GridSpec(2, 2) ax = plt.subplot(gs[0, 0])
таким образом, пример bmu становится:
import numpy as np import matplotlib.pyplot as plt # generate some data x = np.arange(0, 10, 0.2) y = np.sin(x) # plot it fig = plt.figure(figsize=(8, 6)) ax0 = plt.subplot2grid((1, 3), (0, 0), colspan=2) ax0.plot(x, y) ax1 = plt.subplot2grid((1, 3), (0, 2)) ax1.plot(y, x) plt.tight_layout() plt.savefig('grid_figure.pdf')