Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/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
在Plotly(Python)中恢复为默认值的自定义颜色比例_Python_Colors_Data Visualization_Plotly - Fatal编程技术网

在Plotly(Python)中恢复为默认值的自定义颜色比例

在Plotly(Python)中恢复为默认值的自定义颜色比例,python,colors,data-visualization,plotly,Python,Colors,Data Visualization,Plotly,我很难在美国各州的choropleth绘图中以绘图方式显示自定义颜色比例。z值在此表示每个状态的值除以所有状态的平均值。下面链接了一幅图像 具体来说,我希望色标的span范围为z,但感知中点(RdBu标度上的黄色)始终位于1(数据的平均值)。我希望捕获所有动态范围,同时在人口较多(例如大约1)的州集中保留更密集的颜色信息 我的代码如下所示(尝试忽略上下文位): def plot_states(sms_范围,var='normalized Basic vs DOT',norm=False,time

我很难在美国各州的choropleth绘图中以绘图方式显示自定义颜色比例。
z
值在此表示每个状态的值除以所有状态的平均值。下面链接了一幅图像

具体来说,我希望色标的
span
范围为
z
,但感知中点(RdBu标度上的黄色)始终位于1(数据的平均值)。我希望捕获所有动态范围,同时在人口较多(例如大约1)的州集中保留更密集的颜色信息

我的代码如下所示(尝试忽略上下文位):

def plot_states(sms_范围,var='normalized Basic vs DOT',norm=False,timeupper='2018-10-24',
timelower='2010-01-01',
标题='测试图(悬停以进行细分)':
df=sms\u range[sms\u range.index.get\u level\u value(1)=pd.to\u datetime(timelower)].sort\u index()
dfmean=df.平均值(级别=0)
如果标准:
totalmean=df.中值()
绘图z=dfmean[var]/(总平均值[var])
其他:
plot_z=dfmean[var].astype(float)
dfmean['code']=州缩写[:,1]
最小值=plot_z.min()
最大值=绘图_z.max()
onepointlow=((1-最小值)/(最大值-最小值))*0.9
onepointhigh=((1-最小值)/(最大值-最小值))*1.1
色标=[[0.0,'rgb(49,54149)”,#蓝色
[onepointlow/2.,“rgb(116173209)”,
[onepointlow,'rgb(224243248)',#黄色
[onepointhigh,'rgb(25422444)',#黄色
[(一点高+1。)/2.,“rgb(244109,67)”,
[1.0,'rgb(165,0,38)]],#红色
打印(色标)
dfmean['text']=dfmean['code']
数据=[dict(
type='choropleth',
colorscale=colorscale,
自动颜色比例=假,
位置=dfmean[‘代码’],
z=绘图_z,
locationmode='USA-states',
text=dfmean['text'],
记号笔(
行=dict(
颜色='rgb(255255)',
宽度=2
)),
色条(
title=var)
)]
打印(数据)
布局=记录(
头衔,
地理=口述(
范围='美国',
投影=dict(type='albers usa'),
showlakes=True,
lakecolor='rgb(255、255、255)',
)
图=dict(数据=数据,布局=布局)
绘图(图,filename='d3-cloropleth-map')
这里的关键是,在一次运行该函数时

colorscale=([0.0',rgb(49,54149)”,[0.0400',rgb(116173209)”,[0.0801',rgb(224243248)”,[0.0979',rgb(2542242144)”,[0.5489',rgb(244109,67)”,[1.0',rgb(165,0,38)],)

然而,结果图如下所示:

基本上,colorscale默认为标准的“RdBu”colorscale。这很奇怪,因为通过调用树传递的Plotly HTML包含未更改的自定义colorscale,就好像在渲染时忽略了它一样

具体而言,plotly/offline.py中的plotly\u html包含:
window.PLOTLYENV=window.PLOTLYENV | |{};window.PLOTLYENV.BASE_URL=”https://plot.ly“Plotly.newPlot(54d14a55-4470-4e77-908a-ed1aad3efd68),[{”类型:“choropleth”,“autocolorscale”:false,“text:”[“AL”,“AK”,“AZ”,“AR”,“CA”,“CO”,“CT”,“DE”,“DC”,“FL”,“GA”,“HI”,“ID”,“IL”,“IN”,“IA”,“KS”,“KY”,“LA”,“ME”,“MD”,“MA”,“MI”,“MN”,”MS、MO、MT、NE、NV、NH、NJ、NM、NY、NC、ND、OH、OK、OR、PA、RI、SC、SD、TN、TX、UT、VT、VA、WA、WV、WI、WY”]、“色条”:{“标题”:“药物/酒精\ u2217_标准”},“位置模式”:“美国州”、“z”:[0.9574031223360088, 4.663833598074362, 0.7470654042509098, 0.45790667712096444, 0.7139322298296459, 1.215065339824984, 0.9474219012849346, 0.7353880993782959, 2.810812736720189, 0.6462863936749693, 0.9986899212581901, 6.548052464708055, 1.0090737091057922, 0.49457016318780755, 0.695353446901323, 0.9419458477900825, 0.8293205959460278, 0.7351136201837116, 1.6921332609878887, 1.9066962190394505, 0.8032201503740584, 1.572393730339865, 1.0845158832537063, 0.9784209575362792, 0.9652909590698142, 0.6196209448011111, 1.4865809187853425, 0.6422023875155145, 1.0212118831303278, 1.7328143913690517, 0.7946163933668561, 0.716044064254416, 1.0120916518088283, 0.9151593810825868, 2.046814218440964, 1.1652449211545537、0.855093980583285、1.497308945837465、0.6778640418859166、0.9013539653339065、1.6812599294250667、1.1817300995782374、1.0516933417009253、0.720853315460788、1.1375338872234784、1.5900074550270746、1.1047246521920622、1.8910551057861155、1.03573267814427、1.208933944738189、23398、[RG0.390]色标度:[](49,54149)”,[0.040055197987766846,“rgb(116173209)”,[0.0801039597533692,“rgb(224243248)”,[0.09791270619207847”,“rgb(254224144)”,[0.5489563530960392”,“rgb(244109,67)”,[1.0”,“rgb(165,0,38)”,“位置:“:[“AL”,“AK”,“AZ”,“AZ”,“AR”,“CA”,“CO”,“CT”,“DE”,“DC”,“KS”,“GA”,“HI”,“ID”,“IL”,“KY”,“IA”,“ME”,“ME”,“IA”,“ME”“,“MA”,“MI”,“MN”,“MS”,“MO”,“MT”,“NE”,“NV”,“NH”,“NJ”,“NM”,“NY”,“NC”,“ND”,“OH”,“OK”,“OR”,“PA”,“RI”,“SC”,“SD”,“TN”,“TX”,“UT”,“VT”,“VA”,“WA”,“WV”,“WI”,“WY”],“标记物”{“线”:{“宽度”:2,“颜色”:“rgb(255255255)”}}}}],{“标题”:“D/A合规性,2017年标准化”,“地理位置”:{“showlakes”:真实,“范围”:“美国”,“湖色”:“rgb(255,255,255)”,“投影”:{“类型”:“albers usa”}}}},{“链接文本”:“导出到plot.ly”,“showLink”:true})

正如你所见,它定义了正确的色阶

这是我的代码中的一个明显问题吗?还是渲染器中有什么东西绕过了我的自定义颜色比例-例如预期行为

谢谢你的帮助

def plot_states(sms_range, var='normalized Basic vs DOT', norm=False, timeupper = '2018-10-24',
            timelower = '2010-01-01',
            title = 'Test Figure (Hover for breakdown)'):

df = sms_range[sms_range.index.get_level_values(1) <=
               pd.to_datetime(timeupper)].sort_index()
df = df[df.index.get_level_values(1) >= pd.to_datetime(timelower)].sort_index()


dfmean = df.mean(level=0)

if norm:
    totalmean = df.median()
    plot_z = dfmean[var]/(totalmean[var])
else:
    plot_z = dfmean[var].astype(float)

dfmean['code'] = stateabbreviations[:,1]

minimum = plot_z.min()
maximum = plot_z.max()
onepointlow = ((1. - minimum) / (maximum - minimum))*0.9
onepointhigh = ((1. - minimum) / (maximum - minimum))*1.1

colorscale = [[0.0, 'rgb(49,54,149)'], # Blue
              [onepointlow/2., 'rgb(116,173,209)'],
              [onepointlow, 'rgb(224,243,248)'], # Yellow
              [onepointhigh, 'rgb(254,224,144)'], # Yellow
              [(onepointhigh+1.)/2., 'rgb(244,109,67)'],
              [1.0, 'rgb(165,0,38)']], # Red

print(colorscale)
dfmean['text'] = dfmean['code']

data = [dict(
    type='choropleth',
    colorscale=colorscale,
    autocolorscale=False,
    locations=dfmean['code'],
    z=plot_z,
    locationmode='USA-states',
    text=dfmean['text'],
    marker=dict(
        line=dict(
            color='rgb(255,255,255)',
            width=2
        )),
    colorbar=dict(
        title=var)
)]

print(data)

layout = dict(
    title=title,
    geo=dict(
        scope='usa',
        projection=dict(type='albers usa'),
        showlakes=True,
        lakecolor='rgb(255, 255, 255)'),
)

fig = dict(data=data, layout=layout)
plot(fig, filename='d3-cloropleth-map')