小编MrD*_*ner的帖子

在Matplotlib中着色圆/补丁的交点

以下代码:

# in ipython notebook, enable inline plotting with:
# %pylab inline --no-import-all
import matplotlib.pyplot as plt

# create some circles
circle1 = plt.Circle((-.5,0), 1, color='r', alpha=.2)
circle2 = plt.Circle(( .5,0), 1, color='b', alpha=.2)

# add them to the plot (bad form to use ;, but saving space)
# and control the display a bit
ax = plt.gca()
ax.add_artist(circle1); ax.add_artist(circle2)
ax.set_xlim(-2, 2); ax.set_ylim(-2, 2)
ax.set_aspect('equal')

# display it
plt.plot()
Run Code Online (Sandbox Code Playgroud)

产生以下情节:

VennishDiagram

我想指定四个区域的颜色(1)背景(当前是白色),(2和3)每个单独的事件(非重叠区域,当前是蓝色和红色),以及(4)交叉事件(目前混合紫色).例如,我可能会将它们染成红色,绿色,蓝色,黄色 - 或者 - 我可能会给它们四个不同的,精确指定的灰度值(后者更有可能).[将根据基础数据的特征生成颜色.]

我特别不想使用alpha混合来"推断"交叉点中的颜色.我需要明确控制所有四个区域的颜色.

我可以想到一些解决这个问题的策略:

  • 要求mpl提取构成三个明显彩色图形区域的"原始"补丁对象(并做类似于在背景上操作的东西),然后对它们进行着色.
  • 给定圆圈,手动计算它们的交叉点和颜色交叉点(不知何故).一点一点地看起来很难看.

谢谢!

matplotlib

8
推荐指数
1
解决办法
3285
查看次数

标签 统计

matplotlib ×1