Venn3:如何重新定位圆圈和标签?
Venn3: How to reposition circles and labels?
我做了一个三向维恩图。我有三个似乎无法解决的问题。
移动圆标签的代码是什么(即"Set1"、"Set2"、"Set3")因为现在离圆太远了.
使三个圆等于 sizes/change 圆大小的代码是什么?
围绕绘图移动圆圈的代码是什么。现在,set2 在 set3 中(但颜色不同),我希望图表看起来更像显示维恩图的 "standard" 方式(即 3 个独立的圆圈,中间有一些重叠)。
另一方面,我发现很难找到"set_x"、"set_alpha"等命令应该是什么;如果有人知道可以回答上述问题的手册,我将不胜感激,我似乎找不到包含我需要的所有信息的地方。
import sys
import numpy
import scipy
from matplotlib_venn import venn3,venn3_circles
from matplotlib import pyplot as plt
#Build three lists to make 3 way venn diagram with
list_line = lambda x: set([line.strip() for line in open(sys.argv[x])])
set1,set2,set3 = list_line(1),list_line(2),list_line(3)
#Make venn diagram
vd = venn3([set1,set2,set3],set_labels=("Set1","Set2","Set3"))
#Colours: get the HTML codes from the net
vd.get_patch_by_id("100").set_color("#FF8000")
vd.get_patch_by_id("001").set_color("#5858FA")
vd.get_patch_by_id("011").set_color("#01DF3A")
#Move the numbers in the circles
vd.get_label_by_id("100").set_x(-0.55)
vd.get_label_by_id("011").set_x(0.1)
#Strength of color, 2.0 is very strong.
vd.get_patch_by_id("100").set_alpha(0.8)
vd.get_patch_by_id("001").set_alpha(0.6)
vd.get_patch_by_id("011").set_alpha(0.8)
plt.title("Venn Diagram",fontsize=14)
plt.savefig("output",format="pdf")
What is the code to move the circle labels (i.e."Set1","Set2","Set3") because right now one is too far away from the circle.
类似的东西:
lbl = vd.get_label_by_id("A")
x, y = lbl.get_position()
lbl.set_position((x+0.1, y-0.2)) # Or whatever
"A"
、"B"
、"C"
是预定义的标识符,分别表示三组。
What is the code to make the circles be three equal sizes/change the circle size?
如果您不希望 circle/region 大小与您的数据相对应(不一定是个好主意),您可以使用函数 venn3_unweighted
:
from matplotlib_venn import venn3_unweighted
venn3_unweighted(...same parameters you used in venn3...)
您可以通过向 venn3_unweighted
提供 subset_areas
参数来进一步欺骗和调整结果 - 这是一个指定每个区域所需相对大小的七元素向量。在这种情况下,图表将被绘制为好像区域面积 subset_areas
,但数字将从实际 subsets
显示。尝试,例如:
venn3_unweighted(...., subset_areas=(10,1,1,1,1,1,1))
What is the code to move the circles around the plot.
"move the circles around" 的需要有些不寻常 - 通常您希望圆圈的位置使其交点大小与您的数据相对应,或者使用 "default" 定位。函数 venn3
和 venn3_unweighted
满足了这两个要求。可以任意移动圆圈,但需要一些较低级别的编码,我建议不要这样做。
I found it difficult to find what the commands such as "set_x", "set_alpha" should be
调用v.get_label_by_id
得到的对象是MatplotlibText
对象。您可以阅读其方法和属性here. The object returned by v.get_patch_by_id
is a PathPatch
, look here and here以供参考。
我做了一个三向维恩图。我有三个似乎无法解决的问题。
移动圆标签的代码是什么(即"Set1"、"Set2"、"Set3")因为现在离圆太远了.
使三个圆等于 sizes/change 圆大小的代码是什么?
围绕绘图移动圆圈的代码是什么。现在,set2 在 set3 中(但颜色不同),我希望图表看起来更像显示维恩图的 "standard" 方式(即 3 个独立的圆圈,中间有一些重叠)。
另一方面,我发现很难找到"set_x"、"set_alpha"等命令应该是什么;如果有人知道可以回答上述问题的手册,我将不胜感激,我似乎找不到包含我需要的所有信息的地方。
import sys
import numpy
import scipy
from matplotlib_venn import venn3,venn3_circles
from matplotlib import pyplot as plt
#Build three lists to make 3 way venn diagram with
list_line = lambda x: set([line.strip() for line in open(sys.argv[x])])
set1,set2,set3 = list_line(1),list_line(2),list_line(3)
#Make venn diagram
vd = venn3([set1,set2,set3],set_labels=("Set1","Set2","Set3"))
#Colours: get the HTML codes from the net
vd.get_patch_by_id("100").set_color("#FF8000")
vd.get_patch_by_id("001").set_color("#5858FA")
vd.get_patch_by_id("011").set_color("#01DF3A")
#Move the numbers in the circles
vd.get_label_by_id("100").set_x(-0.55)
vd.get_label_by_id("011").set_x(0.1)
#Strength of color, 2.0 is very strong.
vd.get_patch_by_id("100").set_alpha(0.8)
vd.get_patch_by_id("001").set_alpha(0.6)
vd.get_patch_by_id("011").set_alpha(0.8)
plt.title("Venn Diagram",fontsize=14)
plt.savefig("output",format="pdf")
What is the code to move the circle labels (i.e."Set1","Set2","Set3") because right now one is too far away from the circle.
类似的东西:
lbl = vd.get_label_by_id("A")
x, y = lbl.get_position()
lbl.set_position((x+0.1, y-0.2)) # Or whatever
"A"
、"B"
、"C"
是预定义的标识符,分别表示三组。
What is the code to make the circles be three equal sizes/change the circle size?
如果您不希望 circle/region 大小与您的数据相对应(不一定是个好主意),您可以使用函数 venn3_unweighted
:
from matplotlib_venn import venn3_unweighted
venn3_unweighted(...same parameters you used in venn3...)
您可以通过向 venn3_unweighted
提供 subset_areas
参数来进一步欺骗和调整结果 - 这是一个指定每个区域所需相对大小的七元素向量。在这种情况下,图表将被绘制为好像区域面积 subset_areas
,但数字将从实际 subsets
显示。尝试,例如:
venn3_unweighted(...., subset_areas=(10,1,1,1,1,1,1))
What is the code to move the circles around the plot.
"move the circles around" 的需要有些不寻常 - 通常您希望圆圈的位置使其交点大小与您的数据相对应,或者使用 "default" 定位。函数 venn3
和 venn3_unweighted
满足了这两个要求。可以任意移动圆圈,但需要一些较低级别的编码,我建议不要这样做。
I found it difficult to find what the commands such as "set_x", "set_alpha" should be
调用v.get_label_by_id
得到的对象是MatplotlibText
对象。您可以阅读其方法和属性here. The object returned by v.get_patch_by_id
is a PathPatch
, look here and here以供参考。