上一节已经简单介绍了 pyvisflow 的特点,不过大家还是有不少疑问。
安装:
pip install pyvisflow
更新:
pip install pyvisflow --upgrade
这次我就简单解答一下
本节内容基于 pyvisflow 0.1.9版本
pyvisflow 不是给程序员制作网页服务使用的。
一开始,我看到 pywebio、streamlit 这些库,心想"python 总是可以方便制作分析报告了"。为此,我还写过几篇关于 pywebio 的文章。
不过在使用过程中发现,很多想法无法实现。简单来说,就是给到我的控制权不够。比如说
"我希望点击图表的某个部分,然后页面的表格能够筛选出相关的数据"
streamlit 并非做不到,只是需要你去编写前端控件
一直以来我是使用 excel 制作数据可视化报告,有时候也会使用 powerbi 做一些探索分析。但是他们各有优缺点。
既然没有合适的工具,那么我就做一个吧,这就是 pyvisflow。
开始的时候我是做 server版本,就是类似 dash、streamlit 这种带 web 服务,后来发现做成离线也挺有趣,所以才优先发布离线版本
那么,到底 pyvisflow 是用来做什么的?
如果你是一名需要制作数据分析可视化报告,那么 pyvisflow 就是一个很好的选择。 你完全可以把 pyvisflow 输出的结果看成是一个 excel 文件 ,发给别人就可以使用,不需要考虑别人电脑有没有安装 python。
而 pyvisflow 制作联动效果的能力,目前来看是有超越 power bi 的可能,更重要的是不需要你学习前端知识,就可以制作出各种联动效果 。
联动规则也是非常直观简洁,入门效果可以看这里
羡慕BI软件的可视化?python终于可以做出联动可视化报告
我相信任何人的电脑都有浏览器吧
pyvisflow 目前可以支持 echart、plotly 图表,并且他们之间都可以联动。如果你已经有一些使用 pyechart 或 py plotly 制作的图表,我也提供了相应的方法导入他们。
用了小小例子,假如我有一段 pyechart 的代码:
from pyecharts.charts import Bar
import pyvisflow as pvf
# pyecharts 官网示例
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# pyvisflow
chart = pvf.echart()
chart.utils.use_from_option_dict(bar.get_options())
pvf.to_html('demo.html')
.utils.use_from_option_dict
方法,传入调用图表对象的 get_options
获得的字典就是这么简单!
不过,我是不推荐这么做,因为这样的图表不能使用 filter 过滤联动。
但其他的联动都可以使用,比如上一节演示过的标题:
from pyecharts.charts import Bar
import pyvisflow as pvf
# pyecharts 官网示例
...
# pyvisflow
chart = pvf.echart()
chart.utils.use_from_option_dict(bar.get_options())
# 输入框联动
input = pvf.input()
chart.title=input.value
pvf.to_html('demo.html')
你也可以获得鼠标交互信息:
from pyecharts.charts import Bar
import pyvisflow as pvf
# pyecharts 官网示例
...
# pyvisflow
chart = pvf.echart()
chart.utils.use_from_option_dict(bar.get_options())
#
pvf.markdown('你点中了图表中的商品:{{good}}',good = chart.clickInfo['name'])
pvf.to_html('demo.html')
"一切可联动" 是 pyvisflow 的宗旨 ,下面看一个例子:
import pyvisflow as pvf
# 容器 box
box = pvf.box()
# box 里面写一段文字
text = box.text('我是边框中的文字')
# 设置box的样式
box.styles.set_border().set_background('red')
pvf.to_html('demo.html')
set_background
可以设置一个颜色值既然这个颜色值可以设置,是不是也可以联动?
当然可以:
这是 pyvisflow 的基本操作,非常直观,不用多解释,直接看效果:
上面使用的 rgb(200,200,200,0.5) 最后的0.5是透明度,那么可以不可以把透明度分出来让另一个组件来联动?
看看效果:
你可以利用这一切做什么?一切全凭你的想象力。
下面看看一个小应用效果,当鼠标移到 box 上面的时候,里面的文字颜色变化,box的高度也变化:
import pyvisflow as pvf
# 容器 box
box = pvf.box()
# box 里面写一段文字
text = box.text('我是边框中的文字')
text_color = pvf.fns.ifelse(box.isHover,'red','blue')
text.styles.set('color',text_color)
box_height = pvf.fns.ifelse(box.isHover,'30vh','10vh')
box.styles.set_border().set_transition('1s').set_height(box_height)
pvf.to_html('demo.html')
虽然这些例子不是数据分析报告需要的功能,这只是 pyvisflow 基本功能,但足以让你拥有了控制权。
必须说明的是,pyvisflow 只是刚起步,我还有许多惊喜的功能在研发中,欢迎大家试用并且反馈。