我的孩子正在尝试学习他的乘法表,我正在考虑使用matplotlib创建一个部分填充的乘法表供他练习。棘手的部分是使水平轴和垂直轴的文本在抽动标记之间排列,而不是在抽动标记上居中。
关于如何开始这个的任何想法?
提前感谢。
答案 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()