JavaFX图表(八)之堆积条形图
翻译自 JavaFX - 堆积条形图
StackedBarChart是BarChart的变体,它绘制了指示类别数据值的条形图。条形可以是垂直的或水平的,这取决于哪个轴是类别轴。每个系列的栏位于上一系列的顶部。
以下是堆积条形图,描绘了人口增长。
在JavaFX中,堆积条形图由名为StackedBarChart的类表示。该类属于包javafx.scene.chart。通过实例化此类,您可以在JavaFX中创建StackedBarChart节点。
生成堆积条形图的步骤
要在JavaFX中生成堆积条形图,请按照以下步骤操作。
第1步:创建一个类
创建一个Java类并继承包javafx.application的Application类。然后,您可以按如下方式实现此类的start()方法。
public class ClassName extends Application { @Override public void start(Stage primaryStage) throws Exception { }
}
第2步:定义轴
定义堆积条形图的X和Y轴并为其设置标签。在我们的例子中,X轴代表大陆,y轴代表数百万的人口。
//Defining the x axis
CategoryAxis xAxis = new CategoryAxis(); xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList("Africa", "America", "Asia", "Europe", "Oceania")));
xAxis.setLabel("category"); //Defining the y axis
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Population (In millions)");
第3步:创建堆积条形图
通过实例化包javafx.scene.chart的名为StackedBarChart的类来创建折线图。对于此类的构造函数,传递表示在上一步中创建的X轴和Y轴的对象。
//Creating the Bar chart
StackedBarChart<String, Number> stackedBarChart =
new StackedBarChart<>(xAxis, yAxis);
stackedBarChart.setTitle("Historic World Population by Region");
第4步:准备数据
实例化XYChart.Series类并将数据(一系列,x和y坐标)添加到此类的Observable列表中,如下所示 -
//Prepare XYChart.Series objects by setting data
XYChart.Series<String, Number> series1 = new XYChart.Series<>();
series1.setName("1800");
series1.getData().add(new XYChart.Data<>("Africa", 107));
series1.getData().add(new XYChart.Data<>("America", 31));
series1.getData().add(new XYChart.Data<>("Asia", 635));
series1.getData().add(new XYChart.Data<>("Europe", 203));
series1.getData().add(new XYChart.Data<>("Oceania", 2));
XYChart.Series<String, Number> series2 = new XYChart.Series<>(); series2.setName("1900");
series2.getData().add(new XYChart.Data<>("Africa", 133));
series2.getData().add(new XYChart.Data<>("America", 156));
series2.getData().add(new XYChart.Data<>("Asia", 947));
series2.getData().add(new XYChart.Data<>("Europe", 408));
series1.getData().add(new XYChart.Data<>("Oceania", 6)); XYChart.Series<String, Number> series3 = new XYChart.Series<>();
series3.setName("2008");
series3.getData().add(new XYChart.Data<>("Africa", 973));
series3.getData().add(new XYChart.Data<>("America", 914));
series3.getData().add(new XYChart.Data<>("Asia", 4054));
series3.getData().add(new XYChart.Data<>("Europe", 732));
series1.getData().add(new XYChart.Data<>("Oceania", 34));
第5步:将数据添加到堆积条形图
将上一步中准备的数据系列添加到条形图中,如下所示 -
//Setting the data to bar chart
stackedBarChart.getData().addAll(series1, series2, series3);
第6步:创建组对象
在start()方法中,通过实例化名为Group的类来创建组对象。这属于包javafx.scene。
将上一步中创建的StackedBarChart(节点)对象作为参数传递给Group类的构造函数。这应该是为了将它添加到组中,如下所示 -
Group root = new Group(stackedBarChart);
第7步:创建场景对象
通过实例化名为Scene的类来创建一个Scene,该类属于包javafx.scene。在此类中,传递在上一步中创建的Group对象(root)。
除了根对象之外,还可以传递两个表示屏幕高度和宽度的双参数,以及Group类的对象,如下所示。
Scene scene = new Scene(group ,600, 300);
第8步:设置舞台的标题
您可以使用Stage类的setTitle()方法将标题设置为舞台。此primaryStage是Stage对象,它作为参数传递给场景类的start方法。
使用primaryStage对象,将场景标题设置为Sample Application,如下所示。
primaryStage.setTitle("Sample Application");
第9步:将场景添加到舞台
您可以使用名为Stage的类的方法setScene()将Scene对象添加到舞台。使用此方法添加前面步骤中准备的Scene对象,如下所示。
primaryStage.setScene(scene);
第10步:显示舞台的内容
显示场景的使用命名的方法的内容显示()的的阶段类,如下所示。
primaryStage.show();
第11步:启动应用程序
通过从main方法调用Application类的静态方法launch()来启动JavaFX应用程序,如下所示。
public static void main(String args[]){ launch(args);
}
例
下表列出了1800,1900和2008年各大洲的人口。
非洲 | 美国 | 亚洲 | 欧洲 | 大洋洲 | |
---|---|---|---|---|---|
1800 | 107 | 31 | 635 | 203 | 2 |
1900 | 133 | 156 | 947 | 408 | 6 |
2008年 | 973 | 914 | 4054 | 732 | 34 |
以下是一个Java程序,它使用JavaFX生成描述上述数据的堆积条形图。
将此代码保存在名为StackedBarChartExample.java的文件中。
import java.util.Arrays;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.stage.Stage;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart; public class StackedBarChartExample extends Application { @Override public void start(Stage stage) { //Defining the axes CategoryAxis xAxis = new CategoryAxis(); xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList("Africa", "America", "Asia", "Europe", "Oceania"))); xAxis.setLabel("category");NumberAxis yAxis = new NumberAxis(); yAxis.setLabel("Population (In millions)"); //Creating the Bar chart StackedBarChart<String, Number> stackedBarChart = new StackedBarChart<>(xAxis, yAxis); stackedBarChart.setTitle("Historic World Population by Region"); //Prepare XYChart.Series objects by setting data XYChart.Series<String, Number> series1 = new XYChart.Series<>(); series1.setName("1800"); series1.getData().add(new XYChart.Data<>("Africa", 107)); series1.getData().add(new XYChart.Data<>("America", 31)); series1.getData().add(new XYChart.Data<>("Asia", 635)); series1.getData().add(new XYChart.Data<>("Europe", 203)); series1.getData().add(new XYChart.Data<>("Oceania", 2)); XYChart.Series<String, Number> series2 = new XYChart.Series<>(); series2.setName("1900"); series2.getData().add(new XYChart.Data<>("Africa", 133)); series2.getData().add(new XYChart.Data<>("America", 156)); series2.getData().add(new XYChart.Data<>("Asia", 947)); series2.getData().add(new XYChart.Data<>("Europe", 408)); series1.getData().add(new XYChart.Data<>("Oceania", 6)); XYChart.Series<String, Number> series3 = new XYChart.Series<>(); series3.setName("2008"); series3.getData().add(new XYChart.Data<>("Africa", 973)); series3.getData().add(new XYChart.Data<>("America", 914)); series3.getData().add(new XYChart.Data<>("Asia", 4054)); series3.getData().add(new XYChart.Data<>("Europe", 732)); series1.getData().add(new XYChart.Data<>("Oceania", 34)); //Setting the data to bar chartstackedBarChart.getData().addAll(series1, series2, series3); //Creating a Group object Group root = new Group(stackedBarChart); //Creating a scene object Scene scene = new Scene(root, 600, 400); //Setting title to the Stage stage.setTitle("stackedBarChart"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); }
}
使用以下命令从命令提示符编译并执行保存的java文件。
javac StackedBarChartExample.java
java StackedBarChartExample
执行时,上述程序生成一个显示面积图的JavaFX窗口,如下所示。
JavaFX图表(八)之堆积条形图相关推荐
- JavaFX图表(一)
翻译自 JavaFX - 图表 通常,图表是数据的图形表示.有各种各样的图表来表示数据,如条形图,饼图,折线图,散点图等. JavaFX支持各种饼图和XY图表.在XY平面上表示的图表包括AreaCh ...
- python 条形图 负值_使用python matplotlib获取正负值的堆积条形图
我正在尝试使用python Matplotlib绘制堆积的条形图,并且我要绘制正值和负值.我看过其他文章,谈论如何用正值和负值绘制堆积的条形图,但是没有一个使用Matplotlib完成,所以我找不到解 ...
- Power BI--如何给堆积条形图增加总计
在Power BI报表中,堆积条形图的使用场景还是比较多的,比如下图的销售趋势图表中,既可以看到整体的销售趋势,又可以看到不同品牌(通过颜色来区分)的销售趋势. 但是,如果想知道每一周的总体销售额,这 ...
- 什么是百分比堆积条形图?
条形图实际上范围很广,它是以横置图形展示数据的一种图表类型.百分比堆积条形图即以堆积条形图的形式来显示多个数据序列,但是每个堆积元素的累积比例始终总计为 100%.它主要用于显示一段时间内的多项数据占 ...
- python 条形图_Python数据可视化:基于matplotlib绘制「堆积条形图」
简介 堆积条形图作为条形图的一种,能够显示单个项目与整体之间的关系.不仅可以直观的看出每个系列的值,还能够反映出系列的总和,尤其是当需要看某一项目的总和以及其组成各系列值的比重时,最适合使用堆积条形图 ...
- 地图图表、柱状图、条形图、折线图、中国地图、世界地图、省市地图、仪表盘、雷达图、饼图、散点图、气泡图、瀑布图、堆叠图、热力图、桑基图、关系图、漏斗图、Axure原型、rp原型、产品原型
地图图表.柱状图.条形图.折线图.中国地图.世界地图.省市地图.仪表盘.雷达图.饼图.散点图.瀑布图.气泡图.堆叠图.热力图.桑基图.关系图.漏斗图.Axure原型.rp原型.产品原型.大屏设计必备组 ...
- origin 双Y轴堆积条形图
origin 做双Y轴堆积条形图 方法步骤 首先打开Origin软件,按照上述格式输入数据.那么我们基本的思路是,将"左"设置为左Y轴,将"右"设置为右Y轴. ...
- python百分比堆积条形图_绘制比例数据python(堆积条形图)
我有一个数据集,客户回答问题,客户属于某个类别.该类别是序数.我想将百分比的变化可视化为比例堆积的条形图.以下是一些测试数据: answer | categ 1 1 2 1 3 2 1 2 2 3 3 ...
- Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路...
Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...
最新文章
- 2017最新整理传智播客JavaEE第49期 基础就业班
- 《Java入门经典(第7版)》—— 6.11 练习
- A humble heart2019-11-09
- php post调用api,PHP(CURL)POST数据调用API简单示例
- 95-120-040-源码-Cluster-ClusterEntrypoint
- 《python基础教程(第二版)》学习笔记 基础部分(第1章)
- .net c#购物车模块分析
- Azure SQL作業
- Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
- bugku中的misc题
- 台式电脑没鼠标怎么移动光标_不用鼠标用键盘,怎么移动光标?
- 用了几年的iPhone 11竟然可以免费换电池
- python 正方教务管理系统抢课脚本(仅供学习)
- linux下,fping命令与ping命令解析
- 台式计算机idc数据排名,2019年电脑销量排行_IDC:2019年中国PC市场预测销量持续走低...
- pac代理模式什么意思_PAC是什么意思
- 股票庄家套路(转发)
- MySQL 计算环比(同比类似)
- ARIMA时序模型预测股价波动情况
- linux开放端口命令
热门文章
- vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...
- 问题 B: 十进制到二进制的转换
- JAVA开发需求分析套路_毕设做什么好?感觉都是套路了
- [剑指offer]面试题35:第一个只出现一次的字符
- [蓝桥杯][算法提高VIP]数的划分-dp
- 上元节的灯会(灭)-区间dp
- UVA - 514 Rails-栈
- Tree Recovery(二叉树递归遍历+求后序遍历模板)
- revit如何根据坐标进行画线_铭成教你如何根据同步带的齿形进行选型
- word List18