python - 如何在 matplotlib.pyplot 填充函数后识别其颜色的某些坐标(x,y)?
问题描述
有没有办法将某个坐标(x,y)输入到pyplot并输出其填充颜色作为回报?
前任。(0,0) -> 红色 , (0.75,0) -> 蓝色 , (1,1) -> 白色
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(15,15))
x,y,x2,y2=[],[],[],[]
for i in np.linspace(0,2,300):
x.append(np.cos(np.pi*i))
y.append(np.sin(np.pi*i))
x2.append(0.5*np.cos(np.pi*i))
y2.append(0.5*np.sin(np.pi*i))
plt.fill(x,y,'b')
plt.fill(x2,y2,'r')
解决方案
这是一种可能的方法。让我们从修改后的代码(基于您的)开始:
# Modified code
import numpy as np
import matplotlib.pyplot as plt
from shapely.geometry import Point, Polygon # additional code
plt.figure(figsize=(15,15))
x,y,x2,y2=[],[],[],[]
for i in np.linspace(0,2,300):
x.append(np.cos(np.pi*i))
y.append(np.sin(np.pi*i))
x2.append(0.5*np.cos(np.pi*i))
y2.append(0.5*np.sin(np.pi*i))
# grab the fill objects for use later
# .fill return: matplotlib.patches.Polygon object
blue_pgn = plt.fill(x,y,'b') #Plot filled polygons
red_pgn = plt.fill(x2,y2,'r')
plt.show()
它生成与您的代码相同的图,但也公开了 2 个有用的对象,blue_pgn
并且red_pgn
.
这是第二部分:
# Create geometries from objects in the plot
blue_geom = Polygon(blue_pgn[0].get_xy())
red_geom = Polygon(red_pgn[0].get_xy())
# create a function
def from_xy_to_color(x,y):
point_xy = Point(x,y)
if red_geom.contains(point_xy):
print("xy:",x,y,", color:","Red")
elif blue_geom.contains(point_xy):
print("xy:",x,y,", color:","Blue")
else:
print("xy:",x,y,", color:","White")
# test all the points
xys = [[0,0], [.75,0], [1,1]]
for xy in xys:
#print(xy)
from_xy_to_color(*xy)
这部分的输出:
xy: 0 0 , color: Red
xy: 0.75 0 , color: Blue
xy: 1 1 , color: White
推荐阅读
- python - 将 python int 存储为 Hbase 的 byte[] 数组
- firebase - 如何将数据从firestore发送到实时数据库
- unreal-engine4 - 有没有办法自动按住按钮?
- r - 将标签放在polygonswuth ggplot2之外?即在海中或地图的角落
- python - 是否有像在 javascript 中一样声明单个对象的“快捷方式”?
- python - 使用 tfds 分割数据集
- python - Scrapy - 为什么 Css Selector / Xpath 返回不同的输出?
- sql - 使用 Oracle SQL 开发人员为每次运行选择不同数据的 Oracle SQL
- json - 根据闭包上下文的要求,返回类型“Future ”不是“Widget”
- antd - 具有嵌套元素的表组件数据源