我有一些代码可以生成模7乘法的凯莱表,即(Z/7Z,x)。
我不希望它打印第一个灰色行或灰色列。
我不想让它在第二行和第二列显示零。
我不想让它显示数字,所以我猜color = 'none'。
我不希望它将分割线显示为黑色,而是显示为“无”。
我想偏移cmap,所以1现在是紫色,6是红色(不是0 --〉6,而是1 --〉6)
import numpy as np
import matplotlib.pyplot as plt
# Create Cayley table
table = np.zeros((8, 8), dtype=int)
for i in range(8):
for j in range(8):
table[i][j] = ((i-1) * (j-1)) % 7
# Create figure and axis objects
fig, ax = plt.subplots()
# Hide axes
ax.axis('off')
# Create table with rainbow colors
table_obj = ax.table(cellText=table.astype(str), loc='center', cellColours=plt.cm.get_cmap('rainbow')(table/6))
# Set table properties
table_obj.auto_set_font_size(False)
table_obj.set_fontsize(14)
table_obj.scale(1, 2)
# Color first row and first column
for i in range(8):
cell = table_obj[0, i]
cell.set_facecolor('grey')
text = cell.get_text()
if i == 0:
text.set_text('')
else:
text.set_text(str(i-1))
text.set_color('white')
text.set_fontsize(14)
text.set_position((0.5, 0.5))
for i in range(8):
cell = table_obj[i, 0]
cell.set_facecolor('grey')
text = cell.get_text()
if i == 0:
text.set_text('')
else:
text.set_text(str(i-1))
text.set_color('white')
text.set_fontsize(14)
text.set_position((0.5, 0.5))
# Add white '+' at position [0,0]
cell = table_obj[0, 0]
text = cell.get_text()
text.set_text('+')
text.set_color('white')
text.set_fontsize(14)
text.set_position((0.5, 0.5))
# Show plot
plt.show()
我试着改变for循环,但是前两行和前两列仍然出现,条目表[0,0]只是显示为空白和紫色--对应于0。
# Create Cayley table
table = np.zeros((8, 8), dtype=int)
for i in range(1, 8):
for j in range(1, 8):
table[i][j] = ((i-1) * (j-1)) % 7
-- snip --
# Color first row and first column
for i in range(1, 8):
cell = table_obj[0, i]
cell.set_facecolor('grey')
text = cell.get_text()
if i == 0:
text.set_text('')
else:
text.set_text(str(i-1))
text.set_color('white')
text.set_fontsize(14)
text.set_position((0.5, 0.5))
for i in range(1, 8):
cell = table_obj[i, 0]
cell.set_facecolor('grey')
text = cell.get_text()
if i == 0:
text.set_text('')
else:
text.set_text(str(i-1))
text.set_color('white')
text.set_fontsize(14)
text.set_position((0.5, 0.5))
-- snip --
1条答案
按热度按时间dwthyt8l1#
你似乎想展示一个模7乘法表的热图,但没有零。这可以用几行海运代码来创建:
通过seaborn的选项,你可以调整它的外观。这里有一个例子。只要关闭你不想要的修改。