You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否调整matplotlib-venn/venn3图中圆圈的位置至指定样式?

自定义matplotlib-venn中venn3图的圆圈布局

要实现你需要的「上方一个圆、下方两个并排圆」的venn3布局,matplotlib-venn默认的三角排列无法满足,需要手动指定每个圆的中心位置和半径,具体实现代码如下:

from matplotlib_venn import venn3, venn3_circles
import matplotlib.pyplot as plt

# 创建画布
plt.figure(figsize=(8, 8))

# 定义集合及交集的大小,格式为(A, B, C, AB, AC, BC, ABC),按需替换为你的数据
subset_sizes = (15, 15, 15, 3, 3, 3, 1)

# 手动设置三个圆的中心坐标(对应A、B、C)和半径
circle_centers = [(0, 0.5), (-0.5, -0.2), (0.5, -0.2)]
circle_radii = [0.5, 0.5, 0.5]

# 绘制venn图的轮廓圆圈
venn3_circles(subsets=subset_sizes, centers=circle_centers, radii=circle_radii, 
              linewidth=2, color='black', linestyle='solid')

# 绘制填充区域、标签及数值
venn_diagram = venn3(subsets=subset_sizes, centers=circle_centers, radii=circle_radii,
                     set_labels=('集合A', '集合B', '集合C'),
                     set_colors=('#8dd3c7', '#ffffb3', '#bebada'), alpha=0.6)

# 调整标签字体大小(可选)
for label in venn_diagram.set_labels:
    label.set_fontsize(12)
for label in venn_diagram.subset_labels:
    if label:
        label.set_fontsize(10)

# 保证圆圈显示为正圆形
plt.axis('equal')
plt.title("自定义布局的三元Venn图")
plt.show()

关键参数说明

  • circle_centers:按「上方圆、左下圆、右下圆」的顺序设置坐标,你可以根据需求微调数值,改变圆的位置。
  • circle_radii:统一设置半径保证三个圆大小一致,也可以单独修改某个值调整单个圆的大小。
  • subset_sizes:传入你的真实集合数据,格式严格对应「A的大小、B的大小、C的大小、AB交集、AC交集、BC交集、ABC交集」。
  • plt.axis('equal'):必须添加,否则画布比例会导致圆圈变形为椭圆。

如果只需要绘制圆圈轮廓,去掉venn3相关代码,保留venn3_circles即可。

内容的提问来源于stack exchange,提问作者vanem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:35:25