如何使用Python的turtle库绘制带线条的重叠圆形图案
turtle绘制相交韦恩图方案
完整可运行代码
from turtle import Turtle from time import sleep class OperationsOnSets(): def __init__(self): self.font_style = ("Times New Roman", 40, "bold") # 定义区域填充颜色 self.left_color = "#a6c1ee" self.right_color = "#fbc2eb" self.intersection_color = "#d4a5e7" def move_turtle_pos(self, x, y, turtle): turtle.up() turtle.setpos(x, y) turtle.down() def draw_venn(self): turtle = Turtle() turtle.pensize(2) turtle.speed(2) # 隐藏海龟指针 turtle.hideturtle() # 先绘制两个圆的轮廓 self.move_turtle_pos(-100, -50, turtle) turtle.circle(200) self.move_turtle_pos(100, -50, turtle) turtle.circle(200) # 填充左侧独有区域 turtle.color(self.left_color) turtle.begin_fill() self.move_turtle_pos(-100, -50, turtle) # 画左圆的左半部分 turtle.circle(200, 180) # 画完半圆走到右圆的对应点画弧线闭合 turtle.circle(-200, 180) turtle.end_fill() # 填充右侧独有区域 turtle.color(self.right_color) turtle.begin_fill() self.move_turtle_pos(100, -50, turtle) # 画右圆的右半部分 turtle.circle(200, 180) turtle.circle(-200, 180) turtle.end_fill() # 填充交集区域 turtle.color(self.intersection_color) turtle.begin_fill() self.move_turtle_pos(0, 150, turtle) turtle.circle(200, 60) turtle.circle(-200, 120) turtle.circle(200, 60) turtle.circle(-200, 120) turtle.end_fill() # 重画一遍外轮廓保证线条清晰 turtle.pencolor("black") self.move_turtle_pos(-100, -50, turtle) turtle.circle(200) self.move_turtle_pos(100, -50, turtle) turtle.circle(200) # 添加集合标注 self.move_turtle_pos(-200, 100, turtle) turtle.write("A", font=self.font_style) self.move_turtle_pos(170, 100, turtle) turtle.write("B", font=self.font_style) self.move_turtle_pos(-15, 100, turtle) turtle.write("A∩B", font=self.font_style) sleep(5) turtle.screen.mainloop() example = OperationsOnSets() example.draw_venn()
改动说明
- 修复了原代码类方法缩进错误、缺失模块导入的语法问题
- 新增分区域填充逻辑,三种不同颜色区分集合独有区域和交集区域
- 补充了集合文本标注,复用了你定义的font_style参数
- 最后重绘外轮廓,避免填充覆盖掉边框线条
内容的提问来源于stack exchange,提问作者user12324007
相关产品推荐
相关产品推荐

