我已经写了一些代码来用虚线表示带有色标的条形图。预期结果看起来像这样,但只有一个下拉菜单
,因此我编写了以下代码:
#!/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)
相反,获得的结果最终看起来像这样 https://brandatastudio.shinyapps.io/visualization-practica/
经过测试和重新测试后,我发现代码的主要错误似乎在本节中
mode = 'markers',
marker = dict(
size=16,
color = datause['Total Investment ($ Millions)'],
colorbar = dict(title = "hola"),
colorscale = 'Viridis'
))]
如果我删除代码的那一部分,仪表板看起来应该像它应该的样子,当然没有色标。
所以,问题是,我插入色标时失败了吗?我一直在检查如何添加它们的不同帖子
https://community.plot.ly/t/add-a-colorbar-to-scatter-plot-in-python/13349
我没有找到适用于仪表板或条形图的示例,只有在这里我希望能够寻求帮助。
注意:以下是有关影响环境和包装的信息:
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://plot.ly/python/colorscales/#custom-contour-plot-colorscale
的数据集Iḿ答案 0 :(得分:1)
我唯一看到的问题是线路
mode = 'markers',
在go.Bar
内。如果您转到reference,将会看到Bar痕迹没有此属性。如果仍然无法正常工作,我建议进行有计划的更新,因为版本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
}
)
答案 1 :(得分:0)
在使用Dash向地图添加色彩比例时,我遇到了类似的问题,而解决此问题的方法是通过运行代码找出底层的配色方案:
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']]