使用Matplotlib创建部分乘法表棋盘?

时间:2011-06-06 18:46:38

标签: python numpy matplotlib

我的孩子正在尝试学习他的乘法表,我正在考虑使用matplotlib创建一个部分填充的乘法表供他练习。棘手的部分是使水平轴和垂直轴的文本在抽动标记之间排列,而不是在抽动标记上居中。

关于如何开始这个的任何想法?

提前感谢。

1 个答案:

答案 0 :(得分:6)

正如大家已经说过的,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