python - 如何使用 python 集成下拉列表以选择带有数据透视表数据的条形图中的系列?
问题描述
我正在尝试为一些 IRS 税收数据创建可视化;由于数据的性质,我必须将其集成为数据透视表数据。我一直在摸索破折号和应用程序回调,但进展并不顺利。
对于数据中的单个系列,我绘制的内容本身就足够好,但数据集有很多不同的数据系列(即合伙企业和 S corp 收入、遗产和信托收入、特许权使用费收入、失业补偿等),我希望能够通过下拉选择;类似于这里的图片
我猜想弄清楚如何通过诸如 list(data.columns) 之类的东西自动解析列标题并对其进行范围分析会有所帮助,但弄清楚如何使用 app.callback 还没有解决(或者我可能没有'甚至不需要 app.callback 并且可以通过 plotly.graph_objects 使用 figure.update 来做到这一点?)
源数据: https ://github.com/ohiTuna/tax-data-viz/blob/main/taxthing4.csv
任何指导甚至推动相关示例的方向都将不胜感激。我对 python 还是很陌生(显然),所以翻阅 bokeh、dash 等的官方文档已经超出了我的想象。我猜我可以用 plotly 完成这一切,但这一切都是从学习散景开始的。
import numpy as np
import pandas as pd
import warnings
import matplotlib
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')
from bokeh.plotting import figure, show, output_file, output_notebook
import datetime
data = pd.read_csv('taxthing4.csv', parse_dates=['Date'])
data.head()
data.Date.min(), data.Date.max()
data.incomesize2.value_counts()
data['Year'] = data.Date.apply(lambda x: x.year)
wide = data.pivot(index='Date', columns='incomesize2', values='PartnershipAndScorpNetIncomeTotal')
wide.reset_index(inplace=True)
wide['Year'] = wide.Date.apply(lambda x: x.year)
temp_df = wide.groupby(['Year']).sum().reset_index()
temp_df.head()
cats = ['0 to 50k','50k to 200k','200k to 1mil','1mil and up']
source = ColumnDataSource(data=temp_df)
p = figure( plot_width=800, title="PartnershipAndScorpNetIncomeTotal",toolbar_location='above', tools=TOOLS)
p.vbar_stack(cats, x='Year', width=0.9, color=colors, source=source,
legend=[value(x) for x in cats])
p.y_range.start = 0
p.yaxis.formatter.use_scientific = False
matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ','))
p.xaxis.axis_label = 'Year'
p.yaxis.axis_label = 'USD'
output_file("stacked_bar.html", title="Stacked Bar Chart")
show(p)
解决方案
推荐阅读
- mysql - 在mysql中搜索相似词
- r - R - 正则表达式:W 元字符在方括号内时不起作用
- c++ - Arduino 链接未定义参考
- java - 日食新手,需要指导
- python - “scipy.optimize.minimize”忽略约束,推导处处为正
- python - 当窗口调整大小时,Kivy recycleview 项目会重新排序
- docker - 在 docker-compose.yml 卷中声明为部分和在服务下有什么区别?
- python - 引发 H2OValueError (message=message, var_name=vname, skip_frames=1)
- firebase - 使用事务实时数据库将点从用户移动到另一个用户
- c# - Docker:dotnet ef 数据库更新失败