Как использовать Python для рисования ориентированных графиков диаграмм Янга?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Python для рисования ориентированных графиков диаграмм Янга?

Сообщение Anonymous »

Я пытаюсь нарисовать ориентированный граф диаграмм Янга с помощью Python, но сталкиваюсь с некоторыми проблемами при добавлении стрелок между диаграммами Янга. Следующий код выполняется правильно, но не дает ожидаемого результата, главным образом потому, что стрелки отображаются неправильно.

Код: Выделить всё

import matplotlib.pyplot as plt
import matplotlib.patches as patches

def draw_young_diagram(ax, partition, max_rows, max_cols):

ax.set_xlim(0, max_cols)
ax.set_ylim(-max_rows, 0)
ax.set_aspect('equal')
ax.axis('off')

for i, row_length in enumerate(partition):
for j in range(row_length):
rect = patches.Rectangle((j, -i-1), 1, 1, fill=True,     edgecolor='black', facecolor='white')
ax.add_patch(rect)

def add_arrow_between_young_diagrams_simple(fig, start_pos, end_pos):

plt.annotate('', xy=end_pos, xytext=start_pos,
arrowprops=dict(arrowstyle="->", lw=2, color='blue'))

def plot_young_diagrams_with_simple_arrow():

fig = plt.figure(figsize=(6, 6))

partitions = {
'm-1-2': [6],   # (6)
'm-2-2': [5, 1]  # (5, 1)
}

max_rows = max(len(p) for p in partitions.values())
max_cols = max(max(p) for p in partitions.values())

positions = {
'm-1-2': [0.3, 0.7, 0.4, 0.15],
'm-2-2': [0.3, 0.4, 0.4, 0.15]
}

axes = {}
for key, pos in positions.items():
ax = fig.add_axes(pos)
draw_young_diagram(ax, partitions[key], max_rows, max_cols)
axes[key] = ax

add_arrow_between_young_diagrams_simple(fig, start_pos=(0.5, 0.8), end_pos=(0.5, 0.6))

plt.show()

plot_young_diagrams_with_simple_arrow()
Я думаю, вам нужно сосредоточиться только на относительном положении двух частей кода ниже. Если я запущу код в этой ситуации, результат будет такой.
Изображение

Если я поменяю эти две части местами, вот так

Код: Выделить всё

add_arrow_between_young_diagrams_simple(fig, start_pos=(0.5, 0.8), end_pos=(0.5, 0.6))

axes = {}
for key, pos in positions.items():
ax = fig.add_axes(pos)
draw_young_diagram(ax, partitions[key], max_rows, max_cols)
axes[key] = ax
Появились стрелка и оси координат.
[img]https://i. sstatic.net/oTll2ojA.png[/img]

Я уже создал подобный ориентированный граф с помощью LaTeX и теперь надеюсь реализовать его с помощью Python. Любые рекомендации от вас, экспертов, будут очень признательны. Ниже приведен направленный граф, который я реализовал с помощью LaTeX.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... g-diagrams
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»