- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的数据框:
date, sub_id, stat_type, value
jan 1, 1233, link_clicks, 12,
feb 1, 1233, link_clicks, 13,
jan 1, 3424, link_clicks, 23,
feb 1, 3424, link_clicks, 34,
...,
jan 1, 1233, transaction, 45,
feb 1, 1233, transaction, 50,
...,
jan 1, 1233, customer_signups, 9,
feb 1, 1233, customer_signups, 8
...
etc...
我想构建一个绘图图,其中包含一个下拉菜单,该菜单在绘制值之前按 stat_type
过滤数据框。
EG 如果您从下拉菜单中选择 “link_clicks”
,它将绘制以下值:
date, sub_id, stat_type, value
jan 1, 1233, link_clicks, 12,
feb 1, 1233, link_clicks, 13,
jan 1, 3424, link_clicks, 23,
feb 1, 3424, link_clicks, 34,
etc...
使用 plotly 绘制过滤器数据帧,但很少有文档说明使用下拉菜单作为单个图形上的过滤器。
我知道 plotly 非常灵活,我想知道是否有人构建了一个交互式图形,其中包含一个下拉菜单,该菜单在 DF 上充当过滤器。
最佳答案
您没有指定如何您想要绘制不同的组,但是由于您有多个 value
值对于不同日期的不同 sub_id
,我猜你想要绘制的一个子集看起来像这样:
sub_id 1233 3424
date
2020-01-01 12 24
2020-02-01 14 20
2020-03-01 4 2
如果是这样,那么您的问题的答案是是:
图 1:点击 link_clicks
图2:点击transaction
时的图
代码:
# Imports
import plotly.graph_objs as go
import pandas as pd
import numpy as np
dfi=pd.DataFrame({'date': {0: '2020.01.01',
1: '2020.01.01',
2: '2020.01.01',
3: '2020.01.01',
4: '2020.01.01',
5: '2020.01.01',
6: '2020.02.01',
7: '2020.02.01',
8: '2020.02.01',
9: '2020.02.01',
10: '2020.02.01',
11: '2020.02.01',
12: '2020.03.01',
13: '2020.03.01',
14: '2020.03.01',
15: '2020.03.01',
16: '2020.03.01',
17: '2020.03.01'},
'sub_id': {0: 1233,
1: 1233,
2: 1233,
3: 3424,
4: 3424,
5: 3424,
6: 1233,
7: 1233,
8: 1233,
9: 3424,
10: 3424,
11: 3424,
12: 1233,
13: 1233,
14: 1233,
15: 3424,
16: 3424,
17: 3424},
'stat_type': {0: 'link_clicks',
1: 'transaction',
2: 'customer_signups',
3: 'link_clicks',
4: 'transaction',
5: 'customer_signups',
6: 'link_clicks',
7: 'transaction',
8: 'customer_signups',
9: 'link_clicks',
10: 'transaction',
11: 'customer_signups',
12: 'link_clicks',
13: 'transaction',
14: 'customer_signups',
15: 'link_clicks',
16: 'transaction',
17: 'customer_signups'},
'value': {0: 12,
1: 50,
2: 9,
3: 24,
4: 100,
5: 18,
6: 14,
7: 24,
8: 39,
9: 20,
10: 10,
11: 8,
12: 4,
13: 2,
14: 3,
15: 2,
16: 1,
17: 1}})
# change some types
dfi['date']=pd.to_datetime(dfi['date'])
dfi['sub_id']=dfi['sub_id'].astype(str)
df=dfi
# split df by stat_type and organize them in a dict
groups = df['stat_type'].unique().tolist()
dfs={}
for g in groups:
dfs[str(g)]=df[df['stat_type']==g]
# pivot data to get different sub_id across dates
dfp={}
for df in dfs:
dfp[df]=dfs[df].pivot(index='date', columns='sub_id', values='value')
# one trace for each column per dataframe
fig=go.Figure()
# set up the first trace
fig.add_trace(go.Scatter(x=dfp['link_clicks'].index,
y=dfp['link_clicks']['1233'],
visible=True)
)
fig.add_trace(go.Scatter(x=dfp['link_clicks'].index,
y=dfp['link_clicks']['3424'],
visible=True)
)
# plotly start
# buttons for menu 1, names
updatemenu=[]
buttons=[]
# button with one option for each dataframe
for df in dfp.keys():
buttons.append(dict(method='restyle',
label=df,
visible=True,
args=[{'y':[dfp[str(df)]['1233'].values, dfp[str(df)]['3424'].values],
'x':[dfp[str(df)].index],
'type':'scatter'}],
)
)
# some adjustments to the updatemenus
updatemenu=[]
your_menu=dict()
updatemenu.append(your_menu)
updatemenu[0]['buttons']=buttons
updatemenu[0]['direction']='down'
updatemenu[0]['showactive']=True
# add dropdown menus to the figure
fig.update_layout(showlegend=False, updatemenus=updatemenu)
# add notations to the dropdown menus
fig.update_layout(
annotations=[
go.layout.Annotation(text="<b>stat_type:</b>",
x=-0.3, xref="paper",
y=1.1, yref="paper",
align="left", showarrow=False),
]
)
fig.show()
关于python - 是否可以构建一个具有过滤数据框的下拉菜单的绘图图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170534/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!