饼状图实例 Java

简介: 【2月更文挑战第6天】

饼状图实例 Java

在数据可视化中,饼状图是一种常用的图表类型,通过展示不同数据类别的占比,直观地呈现数据分布的情况。在Java中,我们可以使用一些第三方库来方便地实现饼状图的绘制,比如使用JFreeChart库。

准备工作

首先,我们需要添加JFreeChart库的依赖,可以通过Maven或手动添加jar包的方式引入相关的库文件。这里以Maven为例,在pom.xml文件中加入以下依赖:

xmlCopy code
<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.3</version>
</dependency>

创建饼状图

接下来,我们来创建一个简单的饼状图实例。假设我们有一个数据集,表示某个销售员在一年内的销售额占比情况,数据格式如下:

销售员

销售额占比

张三

30%

李四

40%

王五

20%

赵六

10%

我们将使用JFreeChart来绘制一个对应的饼状图。

首先,我们需要创建一个PieDataset对象,用于存储数据集。

javaCopy code
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class PieChartExample {
    public static void main(String[] args) {
        PieDataset dataset = createDataset();
    }
    private static PieDataset createDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("张三", 30);
        dataset.setValue("李四", 40);
        dataset.setValue("王五", 20);
        dataset.setValue("赵六", 10);
        return dataset;
    }
}

接下来,我们需要创建一个JFreeChart对象,用于绘制饼状图。

javaCopy code
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
public class PieChartExample {
    public static void main(String[] args) {
        PieDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        ChartFrame frame = new ChartFrame("销售额占比", chart);
        frame.pack();
        frame.setVisible(true);
    }
    private static PieDataset createDataset() {
        // 创建数据集
        // ...
        return dataset;
    }
    private static JFreeChart createChart(PieDataset dataset) {
        JFreeChart chart = ChartFactory.createPieChart(
                "销售额占比",
                dataset,
                true,
                true,
                false
        );
        // 自定义饼状图样式
        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setSectionOutlinesVisible(false);
        plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
        plot.setCircular(true);
        plot.setLabelGap(0.02);
        
        return chart;
    }
}

在上述代码中,我们使用ChartFactory.createPieChart()方法创建了一个饼状图,并指定了图表的标题、数据集、是否显示图例等属性。 为了美化饼状图的样式,我们还对PiePlot对象进行了一些自定义设置,例如去除区域轮廓线、设置标签字体、设置为圆形图等。 最后,我们创建了一个ChartFrame对象,并将图表添加到其中,以便显示饼状图窗口。 现在,我们运行程序,就可以看到绘制出的饼状图窗口,展示了销售员的销售额占比情况。 这只是一个简单的饼状图示例,你可以根据需要自定义数据集和图表样式,以及添加更多交互性和细节的功能。

饼状图来显示某个在线商店的商品销售占比:

javaCopy code
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import java.awt.*;
import java.text.DecimalFormat;
public class PieChartExample {
    public static void main(String[] args) {
        PieDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        ChartFrame frame = new ChartFrame("商品销售占比", chart);
        frame.pack();
        frame.setVisible(true);
    }
    private static PieDataset createDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("电子产品", 40);
        dataset.setValue("服装鞋帽", 30);
        dataset.setValue("家居用品", 20);
        dataset.setValue("食品饮料", 10);
        return dataset;
    }
    private static JFreeChart createChart(PieDataset dataset) {
        JFreeChart chart = ChartFactory.createPieChart(
                "商品销售占比",
                dataset,
                true,
                true,
                false
        );
        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}: {1} ({2})",
                new DecimalFormat("0"), new DecimalFormat("0%")));
        plot.setSectionPaint("电子产品", new Color(0, 128, 128));
        plot.setSectionPaint("服装鞋帽", new Color(255, 99, 71));
        plot.setSectionPaint("家居用品", new Color(0, 0, 255));
        plot.setSectionPaint("食品饮料", new Color(255, 215, 0));
        return chart;
    }
}

在上述示例代码中,我们使用createDataset()方法创建了一个包含不同商品占比的数据集,分别是电子产品、服装鞋帽、家居用品和食品饮料。 在createChart()方法中,我们对饼状图的样式进行了一些自定义设置。例如,我们使用StandardPieSectionLabelGenerator类来显示每个扇区的标签,包括商品类别、销售额和百分比。 我们还使用setSectionPaint()方法为每个商品类别指定不同的颜色,以便在饼状图中进行区分。 最后,我们创建了一个ChartFrame对象,并将饼状图添加到其中,以显示商品销售占比的图表窗口。

org.jfree.data.general.DefaultPieDataset是JFreeChart库中的一个类,用于存储饼状图的数据集。它实现了org.jfree.data.general.PieDataset接口,并提供了一些用于管理和访问饼状图数据的方法。 主要功能和方法:

  1. 添加数据:setValue(Comparable key, Number value)方法用于向数据集中添加一个数据项,该数据项由一个键值对表示,其中键是一个Comparable类型的对象,通常是一个字符串,表示数据项的标签,值是一个Number类型的对象,表示数据项的值。
  2. 移除数据:remove(Comparable key)方法用于从数据集中移除指定键的数据项。
  3. 获取数据:getValue(Comparable key)方法用于获取指定键的数据项的值。
  • getKeys()方法返回数据集中所有数据项的键的集合。
  • getKeys().toArray()方法将数据项的键转换为数组。
  1. 数据排序:sortByName()方法按照键的字母顺序对数据项进行排序。
  2. 数据清空:clear()方法用于清空整个数据集,移除所有数据项。
  3. 数据集监听器: 数据集支持添加和移除数据集监听器,以便在数据发生变化时通知监听器执行相应操作。 除了以上列出的主要方法之外,DefaultPieDataset还提供了其他辅助方法,如getItemCount()用于获取数据集中数据项的数量,getKeys().size()getKeys().toArray().length效果相同。 示例代码:
javaCopy code
import org.jfree.data.general.DefaultPieDataset;
public class DefaultPieDatasetExample {
    public static void main(String[] args) {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("Apple", 45);
        dataset.setValue("Banana", 30);
        dataset.setValue("Orange", 25);
        
        // 获取数据项的值
        Number appleValue = dataset.getValue("Apple");
        
        // 获取数据项的键的集合
        Comparable<?>[] keys = dataset.getKeys().toArray(new Comparable<?>[0]);
        
        // 移除数据项
        dataset.remove("Orange");
        
        // 清空整个数据集
        dataset.clear();
    }
}

在上述示例代码中,我们创建了一个DefaultPieDataset对象,并使用setValue()方法向数据集中添加了三个数据项:Apple、Banana和Orange,它们的值分别是45、30和25。然后,我们演示了如何使用其他方法获取、移除和清空数据项。

相关文章
|
2月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
157 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
2月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
3月前
|
Java
Java——接口的使用实例
Comparable接口用于自定义类的对象比较。通过实现此接口并重写`compareTo`方法,可以定义自定义类型的比较规则。 接下来介绍了Comparator接口,它提供了一种更灵活的比较方式。通过实现Comparator接口并重写`compare`方法,可以根据不同属性定义不同的比较规则。例如,定义一个`BrandComparator`类来比较汽车的品牌。 最后,介绍了Cloneable接口,用于实现对象的克隆。实现该接口并重写`clone`方法后,可以创建对象的浅拷贝或深拷贝。浅拷贝仅复制对象本身,深拷贝则会递归复制所有成员变量。
38 4
Java——接口的使用实例
|
2月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
78 2
|
2月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
144 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
2月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
244 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
3月前
|
存储 Java
Java之静态(static)与实例(instance)
Java之静态(static)与实例(instance)
|
3月前
|
存储 Java
Java内置数据类型和实例的详解
Java内置数据类型分为基本和引用两类。基本数据类型包括整型(`byte`、`short`、`int`、`long`)、浮点型(`float`、`double`)、字符型(`char`)和布尔型(`boolean`),用于存储简单的数值;引用数据类型则用于存储对象的引用,包括类(如`String`)、接口和数组。掌握这两类数据类型是Java编程的基础。以下示例展示了各种数据类型的使用方法。
47 16
|
3月前
|
Java
Java实例详解
Java实例是通过类创建的对象,其核心在于将抽象的类定义转化为具体的实体。类作为对象的模板定义了属性和行为,而实例则是这些定义的具体实现。通过`new`关键字可以创建实例,并利用点运算符访问其属性和方法。实例拥有自己的生命周期,从创建到使用直至被垃圾回收机制自动清理。此外,实例变量和静态变量的区别在于前者属于单个实例,后者则为所有实例共享。理解Java实例的概念及其管理对编程至关重要。
144 14
|
2月前
|
Java
java的Random类和Arrays.sort类使用实例
java的Random类和Arrays.sort类使用实例
11 0