2

我正在使用 python 包 matplotlib_venn 来绘制维恩图。我想设置圆圈的大小,以便在不同的图中圆圈大小相同。我怎么能做到?

from charticle.venn import Venn2
import matplotlib_venn as vplt
import matplotlib.pyplot as plt
fig = plt.figure()
plt.subplot(121)
v2 = vplt.venn2(subsets={'10':10,'01':10,'11':1},set_labels = ('A','B'))
v.Sizes(a=1.0, b=10.0, ab=1.0)
plt.subplot(122)
v1 = vplt.venn2(subsets={'10':10,'01':1000,'11':1},set_labels = ('A','B'))
plt.show()

在此处输入图像描述

4

2 回答 2

0

这个怎么样?我主要使用 venn2_circles 对象并忽略了 venn2 对象。如果您尝试使用 venn2 对象着色,半径将关闭并且无法正确填充,这就是我认为上面的评论所提到的。

import matplotlib_venn as vplt
import matplotlib.pyplot as plt

plt.figure(figsize=(10,10))
plt.subplot(1, 2, 1)
plt.title('Subplot 1')
v = vplt.venn2(subsets=(10,10,1), set_labels=('A', 'B'), set_colors=('w', 'w'))
c = vplt.venn2_circles(subsets=(2, 2, 1), linestyle='solid')
c[0].set_radius(0.32)
c[1].set_radius(0.32)
c[0].set_lw(2.0)
c[1].set_lw(2.0)
c[0].set_color('green')
c[1].set_color('red')
c[0].set_alpha(0.5)
c[1].set_alpha(0.5)
c[0].set_edgecolor('black')
c[1].set_edgecolor('black')

plt.subplot(1, 2, 2)
plt.title('Subplot 2')
v = vplt.venn2(subsets=(10,1000,1), set_labels=('A', 'B'), set_colors=('w', 'w'))
v.get_label_by_id('10').set_x(0.25)
v.get_label_by_id('01').set_x(-.25)
v.get_label_by_id('11').set_x(0)
v.set_labels[0].set_position((-0.22, -0.45))
v.set_labels[1].set_position((0.25, -0.45))


c = vplt.venn2_circles(subsets=(2, 2, 1), linestyle='solid')
c[0].set_radius(0.32)
c[1].set_radius(0.32)
c[0].set_lw(2.0)
c[1].set_lw(2.0)
c[0].set_color('green')
c[1].set_color('red')
c[0].set_alpha(0.5)
c[1].set_alpha(0.5)
c[0].set_edgecolor('black')
c[1].set_edgecolor('black')

结果图片在这里,因为我需要 10 声望才能发布图片

于 2019-12-10T22:49:40.360 回答
0

你做不到。

函数venn2_circlesvenn3_circles返回matplotlib.patch.Circle可以根据您的喜好进一步调整的对象列表。

这意味着圆的半径和圆心是相互关联的,因此改变圆心或半径可能会导致问题。

更多信息:https ://pypi.org/project/matplotlib-venn/和https://stackoverflow.com/a/46008924/7390366

于 2018-07-30T04:21:26.937 回答