我已经用dash编写了一些代码来用色标表示条形图。预期的结果如下所示,但只有一个下拉菜单
https://brandatastudio.shinyapps.io/visualization-practica/
,因此我编写了以下代码:
#!/usr/bin/env python
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.offline as pyo
import plotly.graph_objs as go
import pandas as pd
from dash.dependencies import Input, Output
app = dash.Dash()
datause = pd.read_csv("datawind.csv" , sep = ",")
app.layout = html.Div([
dcc.Graph(
id = 'barplot1'),
dcc.Dropdown(
id="dropmenu" ,
options=[{'label' : i , 'value' : i } for i in datause.columns.values
],
value='Total Investment ($ Millions)')
],
)
@app.callback(Output(component_id = 'barplot1', component_property = 'figure'),
[Input(component_id = 'dropmenu' , component_property = 'value')])
def update_figure(dropmenuinput):
potato = dropmenuinput
return {
'data': [
go.Bar(
x = datause["State"],
y = datause[potato],
mode = 'markers',
marker = {
"color" : datause[potato],
"colorbar" : dict(title = "hola"),
"colorscale" : 'Viridis'
})],
'layout': go.Layout(
title = "pene"
,xaxis={'title': "state"},
yaxis ={'title' : potato}) }
if __name__ == '__main__':
app.run_server(debug=True)
相反,获得的结果最终如下所示
经过测试和重新测试,我发现代码的主要错误似乎在这一部分
mode = 'markers',
marker = dict(
size=16,
color = datause['Total Investment ($ Millions)'],
colorbar = dict(title = "hola"),
colorscale = 'Viridis'
))]
如果我删除代码的这一部分,仪表板看起来应该是这样的,当然没有colorscale。
所以,问题是,我插入色标失败的原因是什么?我一直在查看如何添加https://community.plot.ly/t/add-a-colorbar-to-scatter-plot-in-python/13349的不同帖子
https://plot.ly/python/colorscales/#custom-contour-plot-colorscale
而且我没有发现适用于仪表板或barplots的示例,只有在这里我才能希望找到帮助。
注:以下是与环境和软件包有关的信息,影响:
chardet==3.0.4
click==6.7
Cython==0.28.2
dash==0.21.0
dash-core-components==0.22.1
dash-html-components==0.10.0
dash-renderer==0.12.1
decorator==4.3.0
nbformat==4.4.0
numpy==1.14.2
pandas==0.22.0
pandas-datareader==0.6.0
plotly==2.5.1
python-dateutil==2.7.2
pytz==2018.4
requests==2.18.4
urllib3==1.22
Werkzeug==0.14.1
以下是使用https://drive.google.com/open?id=1Cr74jKf2FHDA7XVAblQX3d9_dVHfXyVG执行ḿ操作的数据集
发布于 2019-04-16 04:37:16
我看到的唯一问题就是这条线
mode = 'markers',
在go.Bar
内部。如果您转到reference,您将看到Bar traces没有此属性。如果它仍然不能工作,我建议按部就班地更新,因为版本3是对库的重大升级(实际上,即使它可以工作,我也建议更新)。
下面是一个笔记本的最小示例:
trace = go.Bar(
x = [1, 2, 3, 4],
y = [1, 2, 3, 4],
marker = {
"color" : [1, 2, 3, 4],
"colorbar" : dict(),
"colorscale" : 'Viridis',
"showscale": True
}
)
发布于 2020-05-16 02:58:34
我在使用Dash向Map添加颜色刻度时遇到过类似的问题,我解决这个问题的方法是通过运行代码找出底层的配色方案:
import plotly.express as px
print(px.colors.sequential.Plasma)
['#0d0887', '#46039f', '#7201a8', '#9c179e', '#bd3786', '#d8576b', '#ed7953', '#fb9f3a', '#fdca26', '#f0f921']
那么我在Dash中的命令是:
"colorscale":[[0.0,'#0d0887'], [0.1,'#46039f'], [0.2,'#7201a8'], [0.3,'#9c179e'], [0.4,'#bd3786'], [0.5,'#d8576b'], [0.6,'#ed7953'], [0.7,'#fb9f3a'], [0.8,'#fdca26'], [1.0,'#f0f921']]
https://stackoverflow.com/questions/55691799
复制相似问题