玩转Python:数据可视化,一个很高级的交互式Python库,附代码
在数据科学和分析的世界里,将数据可视化是至关重要的一步,它能帮助我们更好地理解数据,发现潜在的模式和关系。Python 提供了多种可视化工具,HvPlot 是其中一个出色的库,专为简单且高效的交互式可视化设计。
HvPlot 简介
HvPlot 是基于 HoloViews 的高层抽象绘图库,但它提供了更为直接和方便的API,使得创建复杂的交互式图表变得简单快捷。HvPlot 可以与 Pandas、xarray 等数据处理库无缝集成,并且支持 Bokeh、Matplotlib 等多种绘图后端,允许用户根据需要制作静态或交互式图表。
安装 HvPlot
在开始之前,需要安装 HvPlot,可以使用 pip 来安装:
pip install hvplot
使用示例
让我们通过几个简单的例子来展示 HvPlot 的基本用法。
示例 1:简单的线图
假设我们有一些时间序列数据,我们想要画出它的线图:
import hvplot.pandas # 导入 hvplot 的 pandas 接口
import pandas as pd
import numpy as np
# 创建一个时间序列数据
idx = pd.date_range('2023-01-01', periods=100, freq='D')
data = np.random.randn(100).cumsum()
df = pd.DataFrame(data, index=idx, columns=['value'])
# 使用 hvplot 绘制线图
plot = df.hvplot.line(title="时间序列示例")
plot
这个例子将会产生一个带有标题的时间序列线图,你可以缩放、平移来交互地查看图表。
示例 2:散点图和直方图
继续利用 HvPlot,我们可以很容易地绘制散点图和直方图来查看变量之间的关系和分布:
# 创建一些随机数据
df = pd.DataFrame({
'x': np.random.rand(100),
'y': np.random.rand(100)
})
# 绘制散点图
scatter_plot = df.hvplot.scatter('x', 'y', title="散点图示例")
scatter_plot
# 绘制直方图
histogram = df.hvplot.hist('x', bins=20, title="直方图示例")
histogram
在散点图中,每个点的位置反映了数据表中的一行记录。直方图则显示了变量 'x' 的分布情况。
示例 3:交互式探索
HvPlot 支持通过交互式小部件来探索数据,例如选择不同的变量来绘图:
# 创建一些分类数据
df = pd.DataFrame({
'variable': np.random.choice(['A', 'B', 'C'], 100),
'value': np.random.randn(100)
})
# 交互式绘制箱型图
boxwhisker = df.hvplot.box(y='value', by='variable', title="箱型图示例", width=400)
boxwhisker
这个箱型图将会按照 'variable' 列的类别来显示 'value' 列的分布情况,并且你可以通过交互式图表来查看不同类别的具体统计信息。
示例 4:交互式探索
当然,HvPlot 不仅适用于基础绘图,还可以创建更高级和复杂的可视化,如动态交叉筛选、地理数据可视化以及使用数据流的实时数据可视化。下面是一个使用 HvPlot 进行动态交叉筛选的示例:
我们将使用汽车数据集,展示如何利用 HvPlot 进行动态交叉筛选。用户可以选择汽车的制造年份,动态地看到不同年份下汽车的马力与加速之间的关系。
import hvplot.pandas
import pandas as pd
import panel as pn
from bokeh.sampledata.autompg import autompg_clean as df
# 清洗数据,去除缺失值
df.dropna(inplace=True)
# 创建一个选择器,用于交互
year_slider = pn.widgets.IntSlider(name='yr', start=df.yr.min(), end=df.yr.max(), step=1)
# 定义一个动态更新的散点图函数
@pn.depends(year=year_slider.param.value)
def get_scatter_plot(year):
current_df = df[df.yr == year]
return current_df.hvplot.scatter(
x='hp',
y='mpg',
xlim=(df.hp.min() - 10, df.hp.max() + 10),
ylim=(df.mpg.min() - 5, df.mpg.max() + 5),
title=f'马力 vs. 每加仑英里数(年份:{year})',
color='cyl',
size=10,
hover_cols=['name']
)
# 创建一个 Panel,包含选择器和绘图
dashboard = pn.Column(year_slider, get_scatter_plot)
# 服务化如果你在 Jupyter Notebook 上运行,使用以下命令来显示
# dashboard.servable()
# 如果你使用的是纯 Python 脚本,使用以下命令来启动服务器
dashboard.show()
在这个例子中,我们首先导入了必要的库,然后清洗了Bokeh库中的汽车数据集。
接着,我们创建了一个IntSlider
控件用于选择年份。get_scatter_plot
函数定义了如何根据选定的年份更新散点图。
最后,我们用pn.Column
将滑块和绘图函数组合在一起,形成一个可交互的面板(dashboard
)。
要注意的是,如果你在 Jupyter Notebook 上运行这段代码,需要调用dashboard.servable()
来显示面板。如果是在纯 Python 环境中,需要使用dashboard.show()
来启动一个服务器,并在浏览器中查看面板。
这只是 HvPlot 功能的冰山一角。HvPlot 结合其他库,如 Panel、Datashader 和 GeoViews,可以实现更加复杂和强大的数据可视化。
玩转Python:数据可视化,一个很高级的交互式Python库,附代码的更多相关文章
- Python数据可视化——使用Matplotlib创建散点图
Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...
- Python数据可视化的四种简易方法
摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视化是任何数据科学或机器学习项目的一个重要组成部分.人们常常会从探索数据分析(EDA)开始,来深入了解数据, ...
- Python数据可视化基础讲解
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:爱数据学习社 首先,要知道我们用哪些库来画图? matplotlib ...
- 【数据科学】Python数据可视化概述
注:很早之前就打算专门写一篇与Python数据可视化相关的博客,对一些基本概念和常用技巧做一个小结.今天终于有时间来完成这个计划了! 0. Python中常用的可视化工具 Python在数据科学中的地 ...
- python --数据可视化(一)
python --数据可视化 一.python -- pyecharts库的使用 pyecharts--> 生成Echarts图标的类库 1.安装: pip install pyecharts ...
- Python数据可视化 -- Wordcloud
Python数据可视化 -- Wordcloud 安装 启动命令行,输入:pip install wordcloud word cloud 库介绍 及简单使用 wordcloud库,可以说是pytho ...
- python数据可视化-matplotlib入门(7)-从网络加载数据及数据可视化的小总结
除了从文件加载数据,另一个数据源是互联网,互联网每天产生各种不同的数据,可以用各种各样的方式从互联网加载数据. 一.了解 Web API Web 应用编程接口(API)自动请求网站的特定信息,再对这些 ...
- Python数据可视化编程实战——导入数据
1.从csv文件导入数据 原理:with语句打开文件并绑定到对象f.不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理.然后,csv.reader()方法返回reader对象,通过 ...
- Python数据可视化-seaborn库之countplot
在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效. seaborn官方文档见链接:http://seaborn.pydata.org/api.html countplot是s ...
- python 数据可视化
一.基本用法 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1,1,50) # 生成-1到1 ,平分50个点 ...
随机推荐
- 兴达易控Modbus转Profinet网关连接三菱A800变频器配置案例
兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器 下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编 ...
- Tomcat--文件上传--文件包含--(CVE-2017-12615)&&(CVE-2020-1938)
Tomcat--文件上传--文件包含--(CVE-2017-12615)&&(CVE-2020-1938) 复现环境 采用Vulfocus靶场环境进行复现,搭建操作和文章参考具体搭建教 ...
- 一文浅谈Mockito使用
一.前期准备- 1.准备工作 <!--mockito依赖-->a <dependency> <groupId>org.mockito</groupId> ...
- fepk文件格式说明
1 卫星影像金字塔分块原理说明 通常我们在工作中使用的卫星影像数据,轻则几百M,重则几百个G甚至上TB级.影像数据太大,是大家经常会遇到的一个问题,尤其是想下载一个省以上数据的时候该问题尤为突出.那 ...
- tomcat环境
tomcat环境部署时需要先部署JDK工具: JDK环境: #将上传的jdk包进行解压/并移至Java目录下: tar xf jdk1.8.0_131.tar.gz mkdir -p /usr/jav ...
- 【Qt6】列表模型——几个便捷的列表类型
前面一些文章,老周简单介绍了在Qt 中使用列表模型的方法.很明显,使用 Item Model 在许多时候还是挺麻烦的--要先建模型,再放数据,最后才构建视图.为了简化这些骚操作,Qt 提供了几个便捷类 ...
- Wonder8.promotion营销规则引擎,轻松搞掂千变万化的营销玩法
超过10年没有更新过内容了,不知道现在园子的氛围这类文章还适不适合放首页 想着整点内容,也是支持园子! 旺德發.营销 引擎 概述 为了广泛支持营销活动的复杂与灵活,Wonder8.promotion( ...
- MySQL防止被黑,通过跳板机ssh隧道访问
更新了另外一篇,比这篇的方法更好:[https://www.cnblogs.com/scottyzh/p/17745527.html](服务器没有开放3306端口 远程访问MySQL数据库方法) 一. ...
- fileclude
打开界面是一篇源代码 看到有flag.php文件,直接打开出现错误提示,看来只能用编码读取数据了 需要传入file1和file2 file1编码读取flag.php的内容 file1=php://fi ...
- vue 甘特图(附件):甘特图附件
甘特图样式: .gantt_container { border-color: transparent !important; .gantt_right { top: 0% !important; d ...