Python 2.7 matplotlib.patches.Polygon颜色不渲染
生成此图像:Python 2.7 matplotlib.patches.Polygon颜色不渲染,python-2.7,matplotlib,colors,polygon,patch,Python 2.7,Matplotlib,Colors,Polygon,Patch,生成此图像: 我的问题是代码特别要求多边形中的随机颜色。如果我打印newc的值,并在一个将十六进制代码转换为颜色的网站上显示它们,就会有各种不同的颜色。但输出只有一个。如何修复此问题?为了使补丁集合对各个补丁具有不同的颜色,您有两个选项 使用原始面片的颜色 使用颜色贴图根据一些值数组确定颜色 使用原始面片的颜色。 这种方法最接近问题的代码。需要将参数match_original=True设置为补丁集合 for info, shape in zip(map.counties_info, map.
我的问题是代码特别要求多边形中的随机颜色。如果我打印newc的值,并在一个将十六进制代码转换为颜色的网站上显示它们,就会有各种不同的颜色。但输出只有一个。如何修复此问题?为了使
补丁集合
对各个补丁具有不同的颜色,您有两个选项
match_original=True
设置为补丁集合
for info, shape in zip(map.counties_info, map.counties):
if info['FIPS'] in geoids:
x = np.random.rand(1)[0]
c = cmap(x)[:3]
newc = rgb2hex(c)
patches.append(Polygon(np.array(shape), color=newc, closed=True))
ax.add_collection(PatchCollection(patches))
plt.title('Counties with HQ of NYSE-Listed Firms: 1970')
plt.show()
使用颜色贴图根据一些值数组确定颜色。
这可能更容易实现。您可以为PatchCollection
设置一个值数组,并指定一个着色多边形所依据的颜色贴图,而不是为每个多边形指定颜色
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.patches
import matplotlib.collections
ar = np.array([[0,0],[1,0],[1,1],[0,1],[0,0]])
cmap=plt.cm.jet
patches=[]
fig, ax=plt.subplots()
for i in range(5):
x = np.random.rand(1)[0]
c = cmap(x)[:3]
poly = plt.Polygon(ar+i, color=c, closed=True)
patches.append(poly)
collection = matplotlib.collections.PatchCollection(patches,match_original=True)
ax.add_collection(collection)
ax.autoscale()
plt.show()
为了使
PatchCollection
的各个补丁具有不同的颜色,您有两个选项
match_original=True
设置为补丁集合
for info, shape in zip(map.counties_info, map.counties):
if info['FIPS'] in geoids:
x = np.random.rand(1)[0]
c = cmap(x)[:3]
newc = rgb2hex(c)
patches.append(Polygon(np.array(shape), color=newc, closed=True))
ax.add_collection(PatchCollection(patches))
plt.title('Counties with HQ of NYSE-Listed Firms: 1970')
plt.show()
使用颜色贴图根据一些值数组确定颜色。
这可能更容易实现。您可以为PatchCollection
设置一个值数组,并指定一个着色多边形所依据的颜色贴图,而不是为每个多边形指定颜色
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.patches
import matplotlib.collections
ar = np.array([[0,0],[1,0],[1,1],[0,1],[0,0]])
cmap=plt.cm.jet
patches=[]
fig, ax=plt.subplots()
for i in range(5):
x = np.random.rand(1)[0]
c = cmap(x)[:3]
poly = plt.Polygon(ar+i, color=c, closed=True)
patches.append(poly)
collection = matplotlib.collections.PatchCollection(patches,match_original=True)
ax.add_collection(collection)
ax.autoscale()
plt.show()
看来我没有足够的可信度来支持你的回答。但是它是有效的(对于其他可能会在这里绊倒并怀疑所建议的代码是否有效的人)。谢谢。当收到回复时,你可以采取两种行动:(1)向上投票(2)接受。您可以只接受一个答案(如果有几个答案,请选择最适合您需要的答案);你可以投票选出任何你认为有用的答案。即使由于声望低而未显示选票,也会进行登记。看,看来我没有足够的可信度来支持你的回答。但是它是有效的(对于其他可能会在这里绊倒并怀疑所建议的代码是否有效的人)。谢谢。当收到回复时,你可以采取两种行动:(1)向上投票(2)接受。您可以只接受一个答案(如果有几个答案,请选择最适合您需要的答案);你可以投票选出任何你认为有用的答案。即使由于声望低而未显示选票,也会进行登记。看见