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数据可视化功能,包括引入依赖,几个常用图表示例。更多内容可参考官方示例。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物流行业新突破:数字孪生的核心作用解析

在现代物流行业&#xff0c;效率和精准度是企业竞争的关键。随着数字化技术的发展&#xff0c;数字孪生作为一种新兴技术&#xff0c;正在智慧物流领域崭露头角。通过构建真实物流系统的虚拟映射&#xff0c;数字孪生帮助企业实现全方位的管理优化&#xff0c;为智慧物流带来了…

手机租赁系统开发全流程解析与实用指南

内容概要 在如今快速发展的科技时代&#xff0c;手机租赁系统已经成为一种新兴的商业模式&#xff0c;非常符合当下市场需求。那么&#xff0c;在开发这样一个系统的时候&#xff0c;首先要从需求分析和市场调研开始。在这一阶段&#xff0c;你需要了解用户需要什么&#xff0…

ViewModel

ViewMode是MVVM架构模式中VM层对应的类&#xff0c;它的作用是存储界面数据&#xff0c;并和界面发生数据交互。ViewModel能感知生命周期&#xff0c;并且在界面由于配置问题发生重建时候&#xff0c;可以保持当前的数据不变。生命周期如下&#xff1a; ViewMode由ViewModePr…

Android -- [SelfView] 自定义弹窗式颜色选择器

Android – [SelfView] 自定义弹窗式颜色选择器 PS: 1. 弹框式显示&#xff1b; 2. 支持透明度设置&#xff1b; 3. 支持拖动控件选择颜色&#xff1b; 4. 支持 ARGB | HEX 数值填写预览颜色并返回&#xff1b; 5. 输出支持Hex 和 Int 两种格式&#xff1b;效果 使用方法&…

open cv学习之图片矫正

一&#xff0c;实验原理 图像矫正的原理是透视变换 图像畸变主要有两类&#xff1a;径向畸变和切向畸变。径向畸变通常会导致图像的四个角向外或向内弯曲&#xff1b;切向畸变则是由于相机与图像平面不完全平行引起的。而OpenCV 提供了一个相机标定的工具&#xff0c;能够自动…

微信开发工具卡优化

微信开发者工具优化 设置-通用设置-不勾选 使用GPU加速模式 设置-通用设置-内存限制 1024调整为2048 详情-本地设置-不勾选 启用多核心编译 详情-本地设置-勾选 自动压缩脚本和样式 app.json “lazyCodeLoading”: “requiredComponents”

低空物流配送路径优化的探索

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

vue3 通过变量的值,来动态的进行class的赋值

1、需求&#xff1a;不同的设备因为宽度不一样&#xff0c;所以要做一些调整&#xff0c;但是通过tailwindcss的设置并不能满足我们的条件&#xff1a; 现在手机的屏幕大小也很大&#xff0c;设置了xl&#xff0c;发现电脑动&#xff0c;手机也在动&#xff0c;一样的效果。 2…

【开源】基于SpringBoot框架的在线视频教育平台 (计算机毕业设计)+万字毕业论文 T027

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系统…

导游现场面试需要注意的问题

今天给大家带来一些导游现场面试需要注意的问题&#xff0c;大部分的城市导游考试已经考完了&#xff0c;但是还有一些城市的十二月份才考&#xff0c;有需要的朋友们赶紧来看&#xff0c;有备无患。 01、做好充足准备 认真准备做好每个景点的讲解介绍&#xff0c;不要抱有侥幸…

牛客刷题(总结)

目录 <1> <2> 思路 <1> 给你 4 个整数 a,b,c,d&#xff0c;你需要回答 是奇数还是偶数。 #include<stdio.h> #define int long long int f(int a) {if(a%20){return 0;}else{return 1;}} signed main() {int a,b,c,d;scanf("%lld %lld %lld %ll…

AI智算-k8s部署大语言模型管理工具Ollama

文章目录 简介k8s部署OllamaOpen WebUI访问Open-WebUI 简介 Github&#xff1a;https://github.com/ollama/ollama 官网&#xff1a;https://ollama.com/ API&#xff1a;https://github.com/ollama/ollama/blob/main/docs/api.md Ollama 是一个基于 Go 语言开发的可以本地运…

Arduino: Arduino IDE安装

目录 1.1 Arduino软件下载与安装 1.2 esp32_arduino的开发库安装 1.3 手动安装板支持包 1.1 Arduino软件下载与安装 Arduino官网下载地址&#xff1a;https://www.arduino.cc/en/software。 1.2 esp32_arduino的开发库安装 接下来安装esp32_arduino的开发库。 1.2.1 在线安…

《Hadoop大数据技术应用综合训练》----以NBA冠军球队计数为例

一、综合训练要求 案例中需要处理的文件为nba.csv,该文件记录了NBA历年总冠军的详细情况,文件的字段从左到右依次为比赛年份、具体日期、冠军、比分、亚军和当年MVP(联盟MVP是Most Valuable Player缩写,即最有价值球员),每个字段以半角逗号“,”进行分割,如图1所示。 图…

智能人体安全防护:3D 视觉技术原理、系统架构与代码实现剖析

随着工业化程度的提高&#xff0c;生产安全已成为企业关注的重点。尤其是在一些存在禁区的工业厂区和车间&#xff0c;人员误入或违规进入将带来严重的安全隐患。为了解决这一问题&#xff0c;迈尔微视推出了智能人体安全检测解决方案&#xff0c;为企业提供全方位的人员安全监…

使用html 和javascript 实现微信界面功能2

1.功能说明&#xff1a; 对上一篇的基础上进行了稍稍改造 主要修改点&#xff1a; 搜索功能: 在搜索框后面增加了搜索按钮。 搜索按钮调用performSearch函数来执行搜索操作。 表单形式的功能: 上传文件: 修改为表单形式&#xff0c;允许用户通过文件输入控件选择文件并上传。 …

vulhub复现CVE-2021-44228log4j漏洞

目录 一&#xff1a;漏洞概述 二&#xff1a;漏洞原理 三&#xff1a;漏洞利用 lookup功能&#xff1a; JNDI解析器&#xff1a; ldap服务&#xff1a; RMI&#xff1a; 四&#xff1a;漏洞复现 4.1靶场 4.2dnslog测试 4.3部署jndi-injection-exploit 4.4打开监听端口 4.5触发请…

数据库中的运算符

1.算术运算符 算术运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行加&#xff08;&#xff09;、减&#xff08;-&#xff09;、乘&#xff08;*&#xff09;、除&#xff08;/&#xff09;和取模&#xff08;%&…

Java项目实战II基于Java+Spring Boot+MySQL的社区帮扶对象管理系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在当前社会&#xff0c;随…

计算机的运维成本计算:运算的任务比例(电能消耗);机器成本C和服务率

计算机的运维成本计算&#xff1a;运算的任务比例&#xff08;电能消耗&#xff09;&#xff1b;机器成本C和服务率 “cost”指的是服务器的运维成本&#xff08;cost of operation and maintenance&#xff09;。提出的模型中&#xff0c;考虑了服务器运维成本以及平均队列等…