首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cartopy/Matplotlib RGBA错误

Cartopy/Matplotlib RGBA错误
EN

Stack Overflow用户
提问于 2018-02-26 11:39:56
回答 2查看 218关注 0票数 1

我试图用定制的颜色绘制一个shapefile,在地图上使用cartopy和matplotlib。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import cartopy as cartopy
import pandas as pd
import random as rd

def getcolor(buurtnaam):
    a = rd.uniform(0.0, 255.0)
    b = rd.uniform(0.0, 255.0)
    c = rd.uniform(0.0, 255.0)
    return tuple([a, b, c, 1])

ax = plt.axes(projection=cartopy.crs.PlateCarree())
ax.set_extent((5.35, 5.60, 51.4, 51.5), crs=cartopy.crs.PlateCarree())
filelocation=('buurt.shp')

reader = cartopy.io.shapereader.Reader(filelocation)

for label,shape in zip(reader.records(),reader.geometries()):
    coordinates=cartopy.feature.ShapelyFeature(shape, cartopy.crs.PlateCarree(),edgecolor='black')
    ax.add_feature(coordinates, facecolor=getcolor(label.attributes['buurtnaam']))
plt.show()

然而,这会产生以下结果:

ValueError:无效的RGBA参数: 5.850575504984446

当我在for循环中打印RGBA值时,它们似乎是正确的。

代码语言:javascript
复制
print(label.attributes['buurtnaam'])

罗丘布特

代码语言:javascript
复制
print (getcolor(label.attributes['buurtnaam']))

(109.8833008320893,179.51867989390442,211.09771601504892,1)

代码语言:javascript
复制
print (type(getcolor(label.attributes['buurtnaam'])))

类‘元组’

我的RGBA格式正确吗?这是cartopy/matplotlib中的错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-26 17:39:58

同时我解决了这个问题。RGBA元组应该包含0到1之间的4个值。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import cartopy as cartopy
import pandas as pd
import random as rd

def getcolor(buurtnaam):
    a = rd.uniform(0.0, 1.0)
    b = rd.uniform(0.0, 1.0)
    c = rd.uniform(0.0, 1.0)
    return tuple([a, b, c, 1])

ax = plt.axes(projection=cartopy.crs.PlateCarree())
ax.set_extent((5.35, 5.60, 51.4, 51.5), crs=cartopy.crs.PlateCarree())
filelocation=('buurt.shp')

reader = cartopy.io.shapereader.Reader(filelocation)

for label,shape in zip(reader.records(),reader.geometries()):
    coordinates=cartopy.feature.ShapelyFeature(shape, cartopy.crs.PlateCarree(),edgecolor='black')
    ax.add_feature(coordinates, facecolor=getcolor(label.attributes['buurtnaam']))
plt.show()
票数 3
EN

Stack Overflow用户

发布于 2018-02-26 16:43:59

看起来,您的get_color函数正在生成与您的shapefile无关的随机数,并且这些数字用于您的RGB值。当您将属性buurtnaam的名称传递给函数时,您需要在RGB值生成中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48987682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档