我只想在一张纸上的楔子之间画一些分界线。
这是我的图表目前的样子:
的数据
我希望它看起来是这样的
的
在研究过程中,我发现我可以使用wedgeprops
属性添加分割线,或者在绘制图表后添加分割线,如下所示:
wedges = plt.pie(sizes, labels=labels, colors=colours, autopct='%1.1f%%')
for wedge in wedges[0]:
wedge.set_lw(0.5)
wedge.set_edgecolor("black")
字符串
然而,从我所看到的,一个楔形的线宽属性适用于整个楔形周围的方式,我不能修改一个单一的边缘。
我发现,通过使用补丁,你可以画一个像这样的图表的轮廓圆:
circle = matplotlib.patches.Circle(center, radius, fill=False, edgecolor="k", linewidth=2)
ax.add_patch(circle)
型
但是在wiki中,我看不到一行的补丁,我确实看到了matplotlib.lines.Line2D
,但不确定如何在这种情况下正确使用它。
这是我的完整代码。我试图不画一个分界线之间的“分配”(橙色)和“填充”)(鲑鱼)部分。
def graph_memory_layout(memory_layout):
# Format: F(ree)/A(llocated)[number of bytes]P(adding)[number of bytes] [space] [next entry]
# Extract infomation
layout = memory_layout.split()
colours = []
sizes=[]
for memory in layout:
first_char = memory[0]
if (first_char == 'A'):
allocated_bytes = 0
padded_bytes = 0
padded_flag = None
for i, char in enumerate(memory[1:]):
if char == 'P':
padded_flag = i + 1
allocated_bytes = int(memory[1:padded_flag])
padded_bytes = int(memory[padded_flag + 1:])
payload_bytes = allocated_bytes - padded_bytes
sizes.append(payload_bytes)
colours.append(ALLOCATED_COLOUR)
if padded_bytes is not 0:
sizes.append(padded_bytes)
colours.append(PADDED_COLOUR)
# Perhaps I could track that these wedges shouldn't have a dividing line and use that infomation later somehow?
elif (first_char == 'F'):
sizes.append(memory[1:])
colours.append(FREE_COLOUR)
# Create pie chart
wedges = plt.pie(sizes, colors=colours)
for wedge in wedges[0]:
wedge.set_lw(0.5)
wedge.set_edgecolor("black")
plt.axis("equal")
plt.title("Memory Layout")
# Draw the chart
plt.show()
型
1条答案
按热度按时间nbysray51#
你的思路是正确的。你需要画出下面的扇形的轮廓,然后用饼图的半径画出一个轮廓圆。
字符串