kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Jason Strimpel
Jason Strimpel
Вопрос

Matplotlib субплоты разного размера

Мне нужно добавить два подплана к фигуре. Один подплан должен быть примерно в три раза шире второго (одинаковой высоты). Я сделал это с помощью GridSpec и аргумента colspan, но я хотел бы сделать это с помощью figure, чтобы можно было сохранить в PDF. Я могу настроить первый рисунок с помощью аргумента figsize в конструкторе, но как мне изменить размер второго графика?

203 2012-04-30T18:09:02+00:00 4
 Seanny123
Seanny123
Редактировал вопрос 20-го декабря 2016 в 9:21
Программирование
python
plot
matplotlib
figure
Решение / Ответ
 Hagne
Hagne
9-го марта 2016 в 1:37
2016-03-09T01:37:23+00:00
Дополнительно
Источник
Редактировать
#16072003

Другой способ заключается в использовании функции сюжетных линий и передают соотношение ширины с 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')
 AlexV
AlexV
Редактировал ответ 30-го апреля 2019 в 2:35
316
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 bmu
bmu
2-го мая 2012 в 9:53
2012-05-02T09:53:35+00:00
Дополнительно
Источник
Редактировать
#16072001

Вы можете использовать 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')

результирующий график

 metakermit
metakermit
Редактировал ответ 16-го апреля 2014 в 9:49
208
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 endolith
endolith
8-го апреля 2013 в 4:31
2013-04-08T16:31:59+00:00
Дополнительно
Источник
Редактировать
#16072002

Вероятно, самый простой способ - использовать subplot2grid, описанный в Customizing Location of Subplot Using 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')
30
0
Jason Strimpel
Jason Strimpel
1-го мая 2012 в 12:17
2012-05-01T12:17:00+00:00
Дополнительно
Источник
Редактировать
#16072000

Я использовал объект pyplot'axes для ручной настройки размеров без использования 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()
27
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
Похожие сообщества 30
Python beginners
Python beginners
14 771 пользователей
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/2752736
Открыть telegram
Python
Python
13 688 пользователей
Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/1961404
Открыть telegram
🐍 Python Stepik Chat
🐍 Python Stepik Chat
11 700 пользователей
Этот уютный чат создан для помощи в решение задач на прекрасном курсе "Поколение Python: курс для начинающих" и не только. Правила: https://t.me/pythonstepikchat/619142 Чат для оффтопа - t.me/+fqNb78zlQY81NGUy Наш канал - @kimport_this
Открыть telegram
aiogram
aiogram
9 889 пользователей
Репозиторий: https://github.com/aiogram/aiogram Сайт: https://aiogram.dev Полезная информация: https://t.me/aiogram_ru/1421485?thread=1421477
Открыть telegram
Python — вакансии и аналитика
Python — вакансии и аналитика
6 927 пользователей
Публикуем вакансии и запросы на поиск работы по направлению Python, Flask и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @golang_jobs, @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs
Открыть telegram
Вакансии для Python-разработчиков / Python Jobs
Вакансии для Python-разработчиков / Python Jobs
6 486 пользователей
Как разместить вакансию? — https://t.me/ru_pythonjobs/21926 Размещение вакансий бесплатно. Рекламы нет.
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Александр Македонский
Зарегистрирован 6 дней назад
2
Andrei Kalinin
Зарегистрирован 3 недели назад
3
Koroleva Ego
Зарегистрирован 1 месяц назад
4
Star Lenon
Зарегистрирован 1 месяц назад
5
Данил Жевнеров
Зарегистрирован 2 месяца назад
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
DE
ES
FR
ID
JA
KO
NO
RO
RU
TR
ZH
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией