Используя Matplotlib для создания таблицы частичного умножения? - PullRequest
2 голосов
/ 06 июня 2011

Мой ребенок пытается выучить его таблицы умножения, и я подумывал об использовании matplotlib для создания частично заполненной таблицы умножения, на которой он мог бы практиковаться.Сложная часть состоит в том, чтобы текст горизонтальных и вертикальных осей располагался между метками, а не центрировался на метках.

Любые идеи о том, как начать с этим?

заранее спасибо.

1 Ответ

6 голосов
/ 07 июня 2011

Как уже все говорили, matplotlib на самом деле не лучший инструмент для этого ... Если вы действительно хотите сделать это программно, генерировать HTML было бы честно проще.

Как уже говорилось, это хороший пример.

Самый простой способ изменить положение меток оси - это заменить их текстовыми объектами или просто оставить их как есть и включитьвторостепенная сетка.(У объектов метки есть метод set_position, но он фактически не меняет свою позицию. Я не уверен, является ли это преднамеренным или ошибкой ...) Я собираюсь использовать последнюю технику здесь ...

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
import numpy as np

maxnum = 13
numfilled = 40
x = np.random.randint(0, maxnum, size=numfilled)
y = np.random.randint(0, maxnum, size=numfilled)
z = x * y

fig, ax = plt.subplots()

for X,Y,Z in zip(x,y,z):
    ax.text(X+0.5,Y+0.5,str(Z), ha='center', va='center')

ax.axis([0, maxnum, 0, maxnum])

for axis in [ax.xaxis, ax.yaxis]:
    axis.set_minor_locator(MultipleLocator(1))
    axis.set_ticks(np.arange(maxnum) + 0.5)
    axis.set_ticklabels(range(maxnum))

ax.grid(which='minor')
ax.xaxis.set_ticks_position('top')

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...