Tablesaw封装Plot.ly实现数据可视化

上文介绍tablesaw的数据处理功能,本文向你展示其数据可视化功能,并通过几个常用图表示例进行说明。

Plot.ly包装

可视化是数据分析的重要组成部分,无论你只是“查看”新数据集还是验证机器学习算法的结果。Tablesaw是一个开源、高性能的Java“数据框架”,也是一个用于转换数据以供分析的库。Tablesaw的新绘图框架提供了用Java为整个分析过程创建可视化的平台,从最早的探索到最后的展示。

该框架提供了Java版本的Plot.ly开源JavaScript可视化库封装。Plot.ly基于出色的D3(数据驱动文档)框架,Plot.ly非常好,事实上,它被广泛用于JavaScript以外的语言,如Python和R,虽然这些语言已经有了可靠的可视化选项。与其他语言一样,tablesaw提供的包装器,可以很容易地用纯Java构造图形,并用HTML和JavaScript呈现它们。

加入依赖

<dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-core</artifactId><version>0.43.1</version>
</dependency>
<!-- Tablesaw的绘图扩展,用于数据可视化 -->
<!-- https://mvnrepository.com/artifact/tech.tablesaw/tablesaw-jsplot -->
<dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-jsplot</artifactId><version>0.43.1</version>
</dependency>

时间序列图示例

    Table bush = Table.read().csv("bush.csv");foxOnly = bush.where(bush.stringColumn("who").equalsIgnoreCase("fox"));Plot.show(TimeSeriesPlot.create("Fox approval ratings for George W. Bush", foxOnly,"date", "approval"));

上面代码,首先加载数据,然后过滤数据。接着创建时间序列图,create()方法包括四个参数,分别为标题和数据,后面两个参数分别指定x轴和有轴数据列。当然我们也可以分为两步实现,首先创建图,然后调用 Plot.show()方法显示图形:

    Figure foxPlot =TimeSeriesPlot.create("George W. Bush approval ratings", foxOnly,"date", "approval");Plot.show(foxPlot);

在这里插入图片描述

散点图示例

  • 数据说明
Month,Record,Robberies
1966-01,1,41
1966-02,2,39
1966-03,3,50
1966-04,4,40
1966-05,5,43
1966-06,6,38
1966-07,7,44
1966-08,8,35
1966-09,9,39
1966-10,10,35
1966-11,11,29
1966-12,12,49
1967-01,13,50

第一列是年月,第二列是月份序号,第三列是抢劫案发生次数。我们希望采用折线图方式展现数据。为了更好定义图形,我们通过Layout 和 ScatterTrace两个类实现:

Table robberies = Table.read().csv("boston-robberies.csv");Layout layout =Layout.builder("Boston Robberies by month: Jan 1966-Oct 1975","year", "robberies").build();ScatterTrace trace =ScatterTrace.builder(robberies.numberColumn("Record"),robberies.numberColumn("Robberies")).mode(ScatterTrace.Mode.LINE).marker(Marker.builder().color("#3D9970").build()).fill(ScatterTrace.Fill.TO_NEXT_Y).build();Plot.show(new Figure(layout, trace));

Layout 类的构建器模式来创建一个 Layout 实例。传递给构建器的参数 "Boston Robberies by month: Jan 1966-Oct 1975" 作为图形的标题,"year""robberies" 这两个参数指定布局中坐标轴等相关元素(比如横坐标可能对应 year,纵坐标对应 robberies),最后调用 build() 方法来生成实际的 Layout 对象,该对象会定义可视化图形整体的布局结构。

使用 ScatterTrace 类的构建器模式创建 ScatterTrace 对象(用于定义散点图相关的配置和数据绑定)。在构建器的参数中,通过 robberies.numberColumn("Record")robberies.numberColumn("Robberies") 来指定散点图中数据对应的列(这里分别获取名为 "Record""Robberies" 两列的数据)。通过 .mode(ScatterTrace.Mode.LINE) 将散点图的展示模式设置为折线模式,意味着这些散点会用线段依次连接起来形成折线图。

.marker(Marker.builder().color("#3D9970").build()) 这部分用于设置散点(或者说折线图上数据点对应的标记)的样式,这里指定了颜色为 "#3D9970",是通过先创建一个 Marker 构建器对象,设置颜色属性后再生成实际的 Marker 对象传递给 ScatterTrace 构建器。.fill(ScatterTrace.Fill.TO_NEXT_Y) 是在折线和下一个 Y 轴坐标范围之间进行填充操作),然后调用 build() 方法完成 ScatterTrace 对象的构建,这个对象包含了散点图(折线模式下)具体的数据和样式等配置信息。

在这里插入图片描述

k线图示例

每个时间点展示开盘价、最高和最低价、收盘价。

Table priceTable = Table.read().csv("ohlcdata.csv");
Plot.show(OHLCPlot.create("Prices", priceTable, "date", "open", "high", "low", "close"));

在这里插入图片描述

总结

本文介绍tablsesaw数据可视化功能,包括引入依赖,几个常用图表示例。更多内容可参考官方示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现中国象棋

探索中国象棋 Python 代码实现&#xff1a;从规则逻辑到游戏呈现 中国象棋&#xff0c;这款源远流长的棋类游戏&#xff0c;承载着深厚的文化底蕴与策略智慧。如今&#xff0c;借助 Python 与 Pygame 库&#xff0c;我们能够在数字世界中复刻其魅力&#xff0c;深入探究代码背后…

互联网、物联网的相关标准

互联网的相关标准 网络通信协议&#xff1a; HTTP&#xff08;Hypertext Transfer Protocol&#xff09;&#xff1a;用于在网络中传输文本、图像、音频和视频等数据的协议。它基于请求-响应模型&#xff0c;客户端发送请求给服务器&#xff0c;服务器返回响应。HTTPS&a…

学习Ajax (概述,应用场景,使用jQury 实现ajax)

目录 前言 概述 什么是Ajax? 同步交互与异步交互的区别是什么呢&#xff1f; 应用场景 场景1 在搜索框搜索 资源 场景2 登录业务的对用户名处理 AJAX的优缺点 优点&#xff1a; 缺点&#xff1a; 使用jQury 实现ajax 使用步骤 1 引入jQury 文件 2 使用Ajax 函数…

网迅通推出新一代智能家居拓展网关

Zigbee 型智能家居拓展网关 产品概述 A、概述 Zigbee 是一种短距离、低功耗的无线通信技术名称。其特点是近距离、低复杂度、低功耗、低数据速率、低成本。ZigBee 模块是一种物联网无线数据终端&#xff0c;利用 ZigBee 网络为用户提供无线数据传输功能。该产品采用高性能的…

ArcGIS字符串补零与去零

我们有时候需要 对属性表中字符串的补零与去零操作 我们下面直接视频教学 下面看视频教学 ArcGIS字符串去零与补零 推荐学习 ArcGIS全系列实战视频教程——9个单一课程组合 ArcGIS10.X入门实战视频教程&#xff08;GIS思维&#xff09; ArcGIS之模型构建器&#xff08;Mod…

NIFI使用

1 从Kafka接收消息&#xff0c;存储到数据库中。 &#xff08;1&#xff09; ConsumerKafka processor &#xff08;2&#xff09;Execute Scripts Processor 我这里是使用JS脚本进行处理。 还有很多其他语言的脚本。 var flowFile session.get(); if (flowFile ! null) {v…

linux系统使用nginx代理mysql数据库

##使用nginx代理mysql数据库 ##安装nginx ./configure --prefix/home/yym/nginx/nginx-install/ --with-http_addition_module --with-http_realip_module --with-stream make && make install ##nginx配置文件 stream { upstream mysqlserver { serv…

kubeadm安装K8s集群之高可用组件keepalived+nginx

系列文章目录 1.kubeadm安装K8s集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx 3.kubeadm安装K8s集群之master节点加入 4.kubeadm安装K8s集群之worker1节点加入 kubeadm安装K8s集群之高可用组件keepalivednginx 1.安装kubeadm、kubectl、kubelet2.安装高…

子网划分实例

看到有人问这个问题&#xff1a; 想了一下&#xff0c;这是一个子网划分的问题&#xff1a; 处理方法如图&#xff1a; 这是一个子网划分的问题 设备1用三层交换机&#xff0c;端口设置为路由模式&#xff0c;设备2和设备3为傻瓜交换机模式 设备2和设备3下挂设备都是26为掩码&…

【前端知识】微前端框架qiankun

微前端框架qiankun 简介一、核心思想二、主要特性三、关键技术四、使用场景五、使用示例六、优势与劣势七、总结 使用一、创建主应用&#xff08;Angular CLI项目&#xff09;二、创建子应用&#xff08;Vue CLI项目&#xff09;三、启动并测试 使用场景一、大型前端应用的拆分…

Ubuntu22.04深度学习环境安装【Anaconda+Pycharm】

anaconda可以提供多个独立的虚拟环境&#xff0c;方便我们学习深度学习&#xff08;比如复现论文&#xff09;&#xff1b; Pycharm编辑器可以高效的编写python代码&#xff0c;也是一个很不错的工具。 下面就记录下Ubuntu22.04的安装流程&#xff1a; 1.Anaconda安装 下载Ana…

Transformer图解

前言 transformer是目前NLP甚至是整个深度学习领域不能不提到的框架&#xff0c;同时大部分LLM也是使用其进行训练生成模型&#xff0c;所以transformer几乎是目前每一个机器人开发者或者人工智能开发者不能越过的一个框架。接下来本文将从顶层往下去一步步掀开transformer的面…

网络安全在数字时代保护库存数据中的作用

如今&#xff0c;通过软件管理库存已成为一种标准做法。企业使用数字工具来跟踪库存水平、管理供应链和规划财务。 然而&#xff0c;技术的便利性也带来了网络威胁的风险。黑客将库存数据视为有价值的目标。保护这些数据不仅重要&#xff0c;而且必不可少。 了解网络安全及其…

种子流和花粉流怎么理解它们之间的大小关系

种子流和花粉流是植物繁殖和遗传多样性研究中的两个重要概念&#xff0c;它们分别描述了种子和花粉在空间上的传播过程。理解它们之间的大小关系&#xff0c;即传播距离和对遗传结构的影响&#xff0c;对于生态学和保护生物学具有重要意义。 种子流&#xff08;Seed Dispersal&…

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip&#xff1b;Wav2Lip是一种用于生成唇形同步&#xff08;lip-sync&#xff09;视频的深度学习算法&#xff0c;它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 &#xff08;Paper&#xff09; Wav2Lip模型…

C编程求助问题:实验报告类型如何画出流程图并编写程序?

求助问题&#xff1a;请问一下怎么做 是实验报告类型的 画出流程图并编写程序&#xff1a; (1) 从键盘上任意输入5个字母&#xff0c;按ASCII从小到大的顺序依次排列输出。 (2) 输入某个字母&#xff0c;查找题(1)数组中是否存在&#xff0c;若存在则输出该字母在数组中的位置。…

C—指针初阶(2)

如果看完阁下满意的话&#xff0c;能否一键三连呢&#xff0c;我的动力就是大家的支持与肯定&#xff0c;冲&#xff01; 二级指针 我们先看概念以及作用&#xff1a;用来存放一级指针的地址的指针 先看例子&#xff0c;我们逐一分析 我们先分析上面那个“1” 标注那里&#x…

Gradle-学习

本来没有想了解Gradle&#xff0c;但是在想看SpringBoot源码的时候发现&#xff0c;在SpringBoot2.2.8版本之后&#xff0c;不再使用maven进行构建&#xff0c;而是使用Gradle。想着把SpringBoot源码导入idea学习下源码&#xff0c;但是来来回回折腾了好几回&#xff0c;都是报…

PE文件结构:NT头部

NT 头部&#xff08;NT Header&#xff09;是 PE 文件格式的核心部分之一&#xff0c;它包含了有关程序如何加载、执行以及一些重要的文件属性。NT 头部常被认为是 PE 头部 的核心或“真正的”PE 头部&#xff0c;因为操作系统加载 PE 文件时&#xff0c;首先会查找 DOS 头部的…

Oracle EBS FA 如何打开关闭的资产会计期间?

用户“运行折旧”,误勾选为“关闭期间”,还有一部分资产还需要操作报废和调整,希望后台打开关闭的资产会计期 系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.9 解决方案 由官方提供SQL脚本代码如下: /*rollback120.sql - for Release 12.X only(based on r…