饼状图实例 Java

举报
皮牙子抓饭 发表于 2024/02/26 09:20:09 2024/02/26
【摘要】 饼状图实例 Java在数据可视化中,饼状图是一种常用的图表类型,通过展示不同数据类别的占比,直观地呈现数据分布的情况。在Java中,我们可以使用一些第三方库来方便地实现饼状图的绘制,比如使用JFreeChart库。准备工作首先,我们需要添加JFreeChart库的依赖,可以通过Maven或手动添加jar包的方式引入相关的库文件。这里以Maven为例,在pom.xml文件中加入以下依赖:xml...

饼状图实例 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。然后,我们演示了如何使用其他方法获取、移除和清空数据项。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。