Plotly:如何更改 3D 曲面图的配色方案?

Plotly: How to change the colour scheme of a 3D surface plot?

我想更改 plotly 中 3D 表面图的配色方案 python。 Plotly默认分配配色方案如下图。

这是我的代码

import import plotly.graph_objects as go
import pandas as pd

data = pd.read_csv('\Data.csv')
data.set_index("years", inplace = True)
figure = go.Figure(data=[go.Surface(z=data.values)])
figure.update_layout(
            scene = dict(
                xaxis = dict(
                    title = 'Months',
                    #nticks = 5,
                    autorange='reversed',
                    showgrid=True, 
                    gridwidth=1, 
                    gridcolor='Blue',
                    ticktext = data.columns,
                    tickvals= list(range(0,data.shape[1]))),
                
                    
                yaxis = dict(
                    title = 'years',
                    showgrid=True, 
                    gridwidth=1, 
                    gridcolor='Blue',
                    ticktext = data.index,
                    tickvals= list(range(0,data.shape[0]))),
              
                zaxis = dict(
                    title = 'Discharge (Cumecs)',
                    #showgrid=True, 
                    gridwidth=1,
                    gridcolor='Blue')),
           tilte = 'Plot 1'
)

您可以通过colorscale

中轻松更改配色方案
go.Surface(colorscale ='<color>')

这是一个使用 colorscale='Blues 的例子:

fig = go.Figure(data=[go.Surface(z=z_data.values, colorscale ='Blues')])

情节

您的色阶选项是(但不一定限于):

Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis.

示例代码:

import plotly.graph_objects as go

import pandas as pd

# Read data from a csv
z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')

fig = go.Figure(data=[go.Surface(z=z_data.values, colorscale ='Blues')])

fig.update_layout(title='Mt Bruno Elevation', autosize=False,
                  width=500, height=500,
                  margin=dict(l=65, r=50, b=65, t=90))
f = fig.full_figure_for_development(warn=False)


fig.show()