在QGIS(如您所知)中,有31个预定义的色带,在cpt-city目录中也有更多。我想访问cpt-city目录中的一个色带(名称:visspec)。
这是我的预定义颜色渐变的代码,它可以正常工作:
myRenderer = QgsGraduatedSymbolRenderer()
myRenderer.setClassAttribute("totalTraffic")
myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)
myRenderer.updateClasses(layer,
QgsGraduatedSymbolRenderer.EqualInterval,500000)
#get default style
myStyle = QgsStyle().defaultStyle()
#get a list of default color ramps [u'Blues', u'BrBG', u'BuGn'....]
defaultColorRampNames = myStyle.colorRampNames()
# setting ramp to Blues, first index of defaultColorRampNames
ramp = myStyle.colorRamp(defaultColorRampNames[7])
myRenderer.updateColorRamp(ramp)
layer.setRenderer(myRenderer)
QgsProject.instance().addMapLayer(layer)
这是我尝试直接导入想要的色带文件的代码,但是此代码无法正常工作。仅提供随机的彩色像素。
myRenderer = QgsGraduatedSymbolRenderer()
myRenderer.setClassAttribute("totalTraffic")
myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)
myRenderer.updateClasses(gridMilano, QgsGraduatedSymbolRenderer.EqualInterval,10000`)
myStyle = QgsStyle().defaultStyle()
defaultColorRampNames = myStyle.colorRampNames()
ramp = myStyle.colorRamp("C:/Program Files/QGIS 3.0/apps/qgis/resources/cpt-city-qgis-min/jjg/physics/visspec.svg")`
myRenderer.updateColorRamp(ramp)
gridMilano.setRenderer(myRenderer)
QgsProject.instance().addMapLayer(gridMilano)
这是我在QGIS中直接应用visspec ccolor ramp时得到的结果
enter image description here
这就是我第二个代码所得到的
enter image description here
提前致谢 :)
最佳答案
您应该使用QgsCptCityColorRamp类:)
myRenderer = QgsGraduatedSymbolRenderer()
myRenderer.setClassAttribute("totalTraffic")
myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)
myRenderer.updateClasses(layer,
QgsGraduatedSymbolRenderer.EqualInterval,100000)
#using color ramp visspec
ramp = QgsCptCityColorRamp("jjg/physics/visspec","",False,True)
myRenderer.updateColorRamp(ramp)
layer.setRenderer(myRenderer)
QgsProject.instance().addMapLayer(layer)
关于python - 如何在PyQGIS中使用cpt-city目录中的色带,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50436148/