import matplotlib.pyplot as plt
from matplotlib import colors, cm
from matplotlib.collections import RegularPolyCollection
import numpy as np
def func(grid, data, num_arr):
max_size = 2200
max_num = max(num_arr)
fig = plt.figure(figsize=[7.49, 5.70], dpi=100)
ax = plt.axes(xlim=(-1, 8), ylim=(-1, 7), autoscale_on=False)
collection = RegularPolyCollection(
numsides=6, # a pentagon
rotation=0, sizes=(max_size,),
facecolors="#FFFFFF",
edgecolors=("gray",),
linewidths=(0.5,),
offsets=grid,
offset_transform=ax.transData,
cmap=cm.gray,
)
ax.add_collection(collection, autolim=True)
for i, j in zip(grid, num_arr):
print(i, j,(max_size*(j/max_num)))
ax.add_collection(RegularPolyCollection(
numsides=6, # a pentagon
rotation=0,
sizes=(max_size*(j/max_num),),
facecolors="#66669A",
edgecolors=None,
linewidths=0.5,
offsets=[i],
offset_transform=ax.transData,
), autolim=True)
for i, j in zip(grid, num_arr):
plt.text(i[0], i[1], j, fontsize=10, color="#FFFFFF",
weight="bold", verticalalignment='center', horizontalalignment='center', rotation=0)
plt.show()
if __name__ == '__main__':
grid = []
num = 7
total_hit = 10
for j in [i * 1 for i in range(num)]:
s = 0
if int(j) % 2:
s = 0.5
for i in np.arange(s, s + num, 1):
grid.append([i, j])
data = np.loadtxt("task.txt").flatten()
num_arr = data.copy() * total_hit
num_arr = num_arr.astype(int)
print(sum(num_arr))
func(grid, data, num_arr)
注意事项&注释:待补充