翻译自   JavaFX - 堆积条形图

StackedBarChart是BarChart的变体,它绘制了指示类别数据值的条形图。条形可以是垂直的或水平的,这取决于哪个轴是类别轴。每个系列的栏位于上一系列的顶部。

以下是堆积条形图,描绘了人口增长。

在JavaFX中,堆积条形图由名为StackedBarChart的类表示。该类属于包javafx.scene.chart。通过实例化此类,您可以在JavaFX中创建StackedBarChart节点。

生成堆积条形图的步骤

要在JavaFX中生成堆积条形图,请按照以下步骤操作。

第1步:创建一个类

创建一个Java类并继承包javafx.applicationApplication类。然后,您可以按如下方式实现此类的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图表(八)之堆积条形图相关推荐

  1. JavaFX图表(一)

    翻译自  JavaFX - 图表 通常,图表是数据的图形表示.有各种各样的图表来表示数据,如条形图,饼图,折线图,散点图等. JavaFX支持各种饼图和XY图表.在XY平面上表示的图表包括AreaCh ...

  2. python 条形图 负值_使用python matplotlib获取正负值的堆积条形图

    我正在尝试使用python Matplotlib绘制堆积的条形图,并且我要绘制正值和负值.我看过其他文章,谈论如何用正值和负值绘制堆积的条形图,但是没有一个使用Matplotlib完成,所以我找不到解 ...

  3. Power BI--如何给堆积条形图增加总计

    在Power BI报表中,堆积条形图的使用场景还是比较多的,比如下图的销售趋势图表中,既可以看到整体的销售趋势,又可以看到不同品牌(通过颜色来区分)的销售趋势. 但是,如果想知道每一周的总体销售额,这 ...

  4. 什么是百分比堆积条形图?

    条形图实际上范围很广,它是以横置图形展示数据的一种图表类型.百分比堆积条形图即以堆积条形图的形式来显示多个数据序列,但是每个堆积元素的累积比例始终总计为 100%.它主要用于显示一段时间内的多项数据占 ...

  5. python 条形图_Python数据可视化:基于matplotlib绘制「堆积条形图」

    简介 堆积条形图作为条形图的一种,能够显示单个项目与整体之间的关系.不仅可以直观的看出每个系列的值,还能够反映出系列的总和,尤其是当需要看某一项目的总和以及其组成各系列值的比重时,最适合使用堆积条形图 ...

  6. 地图图表、柱状图、条形图、折线图、中国地图、世界地图、省市地图、仪表盘、雷达图、饼图、散点图、气泡图、瀑布图、堆叠图、热力图、桑基图、关系图、漏斗图、Axure原型、rp原型、产品原型

    地图图表.柱状图.条形图.折线图.中国地图.世界地图.省市地图.仪表盘.雷达图.饼图.散点图.瀑布图.气泡图.堆叠图.热力图.桑基图.关系图.漏斗图.Axure原型.rp原型.产品原型.大屏设计必备组 ...

  7. origin 双Y轴堆积条形图

    origin 做双Y轴堆积条形图 方法步骤 首先打开Origin软件,按照上述格式输入数据.那么我们基本的思路是,将"左"设置为左Y轴,将"右"设置为右Y轴. ...

  8. python百分比堆积条形图_绘制比例数据python(堆积条形图)

    我有一个数据集,客户回答问题,客户属于某个类别.该类别是序数.我想将百分比的变化可视化为比例堆积的条形图.以下是一些测试数据: answer | categ 1 1 2 1 3 2 1 2 2 3 3 ...

  9. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路...

    Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

最新文章

  1. 2017最新整理传智播客JavaEE第49期 基础就业班
  2. 《Java入门经典(第7版)》—— 6.11 练习
  3. A humble heart2019-11-09
  4. php post调用api,PHP(CURL)POST数据调用API简单示例
  5. 95-120-040-源码-Cluster-ClusterEntrypoint
  6. 《python基础教程(第二版)》学习笔记 基础部分(第1章)
  7. .net c#购物车模块分析
  8. Azure SQL作業
  9. Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
  10. bugku中的misc题
  11. 台式电脑没鼠标怎么移动光标_不用鼠标用键盘,怎么移动光标?
  12. 用了几年的iPhone 11竟然可以免费换电池
  13. python 正方教务管理系统抢课脚本(仅供学习)
  14. linux下,fping命令与ping命令解析
  15. 台式计算机idc数据排名,2019年电脑销量排行_IDC:2019年中国PC市场预测销量持续走低...
  16. pac代理模式什么意思_PAC是什么意思
  17. 股票庄家套路(转发)
  18. MySQL 计算环比(同比类似)
  19. ARIMA时序模型预测股价波动情况
  20. linux开放端口命令

热门文章

  1. vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...
  2. 问题 B: 十进制到二进制的转换
  3. JAVA开发需求分析套路_毕设做什么好?感觉都是套路了
  4. [剑指offer]面试题35:第一个只出现一次的字符
  5. [蓝桥杯][算法提高VIP]数的划分-dp
  6. 上元节的灯会(灭)-区间dp
  7. UVA - 514 Rails-栈
  8. Tree Recovery(二叉树递归遍历+求后序遍历模板)
  9. revit如何根据坐标进行画线_铭成教你如何根据同步带的齿形进行选型
  10. word List18