如何通过 PyQGIS 使用 cpt-city 目录中的颜色渐变

How to use color-ramps from cpt-city catalog with PyQGIS

在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 class :)

    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)