饼状图实例 Java
饼状图实例 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接口,并提供了一些用于管理和访问饼状图数据的方法。 主要功能和方法:
- 添加数据:setValue(Comparable key, Number value)方法用于向数据集中添加一个数据项,该数据项由一个键值对表示,其中键是一个Comparable类型的对象,通常是一个字符串,表示数据项的标签,值是一个Number类型的对象,表示数据项的值。
- 移除数据:remove(Comparable key)方法用于从数据集中移除指定键的数据项。
- 获取数据:getValue(Comparable key)方法用于获取指定键的数据项的值。
- getKeys()方法返回数据集中所有数据项的键的集合。
- getKeys().toArray()方法将数据项的键转换为数组。
- 数据排序:sortByName()方法按照键的字母顺序对数据项进行排序。
- 数据清空:clear()方法用于清空整个数据集,移除所有数据项。
- 数据集监听器: 数据集支持添加和移除数据集监听器,以便在数据发生变化时通知监听器执行相应操作。 除了以上列出的主要方法之外,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。然后,我们演示了如何使用其他方法获取、移除和清空数据项。
- 点赞
- 收藏
- 关注作者
评论(0)