Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 matplotlib.patches.Polygon颜色不渲染_Python 2.7_Matplotlib_Colors_Polygon_Patch - Fatal编程技术网

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)接受。您可以只接受一个答案(如果有几个答案,请选择最适合您需要的答案);你可以投票选出任何你认为有用的答案。即使由于声望低而未显示选票,也会进行登记。看见