在Java swing中,如何绘制折线图、饼状图、条形图?
时间: 2024-01-29 13:02:34 浏览: 66
Java Swing提供了Java2D API来绘制2D图形,可以用它来绘制折线图、饼状图、条形图等。下面分别介绍一下绘制这三种图表的方法。
1. 折线图
绘制折线图可以使用Java Swing中的JFreeChart库。这个库提供了各种类型的图表,包括折线图、饼状图、条形图等。以下是一个简单的绘制折线图的例子:
```java
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.data.xy.*;
public class LineChartExample extends JFrame {
public LineChartExample() {
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart Example",
"X Axis",
"Y Axis",
createDataset(),
PlotOrientation.VERTICAL,
true,
true,
false
);
ChartPanel panel = new ChartPanel(chart);
setContentPane(panel);
}
private XYDataset createDataset() {
XYSeries series = new XYSeries("Data");
series.add(1, 2);
series.add(2, 3);
series.add(3, 1);
series.add(4, 5);
series.add(5, 2);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
public static void main(String[] args) {
LineChartExample example = new LineChartExample();
example.setSize(500, 500);
example.setVisible(true);
}
}
```
2. 饼状图
绘制饼状图可以使用Java Swing中的Java2D API。以下是一个简单的绘制饼状图的例子:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class PieChartExample extends JFrame {
public PieChartExample() {
JPanel panel = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
double total = 100;
double[] values = {20, 30, 15, 35};
Color[] colors = {Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE};
double start = 0;
for (int i = 0; i < values.length; i++) {
double angle = values[i] / total * 360;
g2d.setColor(colors[i]);
g2d.fill(new Arc2D.Double(100, 100, 300, 300, start, angle, Arc2D.PIE));
start += angle;
}
}
};
setContentPane(panel);
}
public static void main(String[] args) {
PieChartExample example = new PieChartExample();
example.setSize(500, 500);
example.setVisible(true);
}
}
```
3. 条形图
绘制条形图可以使用Java Swing中的Java2D API。以下是一个简单的绘制条形图的例子:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class BarChartExample extends JFrame {
public BarChartExample() {
JPanel panel = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
double[] values = {20, 30, 15, 35};
Color[] colors = {Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE};
double x = 100;
double y = 100;
double width = 50;
double height = 0;
for (int i = 0; i < values.length; i++) {
height = values[i];
g2d.setColor(colors[i]);
g2d.fill(new Rectangle2D.Double(x, y, width, height));
x += width + 10;
}
}
};
setContentPane(panel);
}
public static void main(String[] args) {
BarChartExample example = new BarChartExample();
example.setSize(500, 500);
example.setVisible(true);
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)