在JFreeChart的气泡图上正确显示标签,需要通过设置渲染器的方式实现。以下是实现的步骤:
BubbleChart
类进行创建。DefaultXYZDataset
类进行创建。在数据集中添加气泡的坐标和大小。ChartFactory.createBubbleChart
方法进行创建,并将气泡图对象和数据集对象作为参数传入。ChartPanel
类的getChartRenderingInfo
方法获取。XYBubbleRenderer
类进行创建,并设置其显示标签的字体和颜色等属性。XYPlot
类的setRenderer
方法进行设置。addAnnotation
方法添加标签到气泡图上。以下是一个示例代码:
// 创建气泡图对象
BubbleChart bubbleChart = new BubbleChart("气泡图");
// 创建数据集对象
DefaultXYZDataset dataset = new DefaultXYZDataset();
double[][] data = {
{ 1.0, 2.0, 3.0 }, // x坐标
{ 2.0, 3.0, 4.0 }, // y坐标
{ 100, 200, 300 } // 气泡大小
};
dataset.addSeries("series", data);
// 创建绘图对象
JFreeChart chart = ChartFactory.createBubbleChart("气泡图", "X", "Y", dataset);
XYPlot plot = (XYPlot) chart.getPlot();
// 设置渲染器对象
XYBubbleRenderer renderer = new XYBubbleRenderer();
renderer.setBaseToolTipGenerator(new StandardXYZToolTipGenerator());
renderer.setBaseItemLabelGenerator(new StandardXYZItemLabelGenerator());
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelPaint(Color.black);
renderer.setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 9));
plot.setRenderer(renderer);
// 添加标签到气泡图上
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
chartPanel.getChartRenderingInfo().getPlotInfo().setDataArea(chartPanel.getChartRenderingInfo().getChartArea().clone());
int seriesIndex = 0;
for (int i = 0; i < data[0].length; i++) {
String label = "Label " + (i+1);
double x = data[0][i];
double y = data[1][i];
double size = data[2][i];
renderer.addAnnotation(new XYTextAnnotation(label, x, y));
}
// 将气泡图添加到容器中并显示
推荐的腾讯云相关产品:腾讯云服务器、腾讯云数据库、腾讯云音视频处理等,详细介绍和产品链接请参考腾讯云官方网站:https://cloud.tencent.com/
领取专属 10元无门槛券
手把手带您无忧上云