JFreeChart 设置错误标签
JFreeChart set labels for error
我正在使用 JFreeChart 绘制一些数据的图表,并且我已经对其进行了设置,以便图表显示每个点的标准误差:
标签显示了每个点的 Y 值,但我也希望能够显示标准误差的 Y 值。此外,有没有办法让这些数据只在鼠标悬停时显示?
这是我用来添加错误和标签的代码:
XYErrorRenderer renderer = new XYErrorRenderer();
renderer.setBaseLinesVisible(true);
renderer.setBaseShapesVisible(true);
renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("{2}",
NumberFormat.getNumberInstance(),NumberFormat.getNumberInstance()));
renderer.setBaseItemLabelsVisible(true);
chart.getXYPlot().setRenderer(renderer);
提前致谢。
XYErrorRenderer
inherits its implementation of drawItemLabel()
from the abstract parent, which knows nothing about the error bars. You'll need to override drawItem()
in a custom renderer subclass to draw the extra labels. The source for drawItemLabel()
可以作为指南。
附录:一个不那么雄心勃勃的替代方案是在工具提示中显示错误范围。下面的自定义 StandardXYToolTipGenerator
指定自定义格式字符串并覆盖 createItemArray()
以提供来自数据集的相关 y 值。由于您的 XYDataset
是 YIntervalSeriesCollection
,您可以按如下所示进行转换。
renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator(
"{0}: {1}…{2}", NumberFormat.getInstance(), NumberFormat.getInstance()) {
@Override
protected Object[] createItemArray(XYDataset data, int series, int item) {
YIntervalSeriesCollection d = (YIntervalSeriesCollection) data;
Object[] result = new Object[3];
double y = d.getYValue(series, item);
result[0] = getYFormat().format(y);
double min = d.getStartYValue(series, item);
result[1] = getYFormat().format(min);
double max = d.getEndYValue(series, item);
result[2] = getYFormat().format(max);
return result;
}
});
我正在使用 JFreeChart 绘制一些数据的图表,并且我已经对其进行了设置,以便图表显示每个点的标准误差:
标签显示了每个点的 Y 值,但我也希望能够显示标准误差的 Y 值。此外,有没有办法让这些数据只在鼠标悬停时显示?
这是我用来添加错误和标签的代码:
XYErrorRenderer renderer = new XYErrorRenderer();
renderer.setBaseLinesVisible(true);
renderer.setBaseShapesVisible(true);
renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("{2}",
NumberFormat.getNumberInstance(),NumberFormat.getNumberInstance()));
renderer.setBaseItemLabelsVisible(true);
chart.getXYPlot().setRenderer(renderer);
提前致谢。
XYErrorRenderer
inherits its implementation of drawItemLabel()
from the abstract parent, which knows nothing about the error bars. You'll need to override drawItem()
in a custom renderer subclass to draw the extra labels. The source for drawItemLabel()
可以作为指南。
附录:一个不那么雄心勃勃的替代方案是在工具提示中显示错误范围。下面的自定义 StandardXYToolTipGenerator
指定自定义格式字符串并覆盖 createItemArray()
以提供来自数据集的相关 y 值。由于您的 XYDataset
是 YIntervalSeriesCollection
,您可以按如下所示进行转换。
renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator(
"{0}: {1}…{2}", NumberFormat.getInstance(), NumberFormat.getInstance()) {
@Override
protected Object[] createItemArray(XYDataset data, int series, int item) {
YIntervalSeriesCollection d = (YIntervalSeriesCollection) data;
Object[] result = new Object[3];
double y = d.getYValue(series, item);
result[0] = getYFormat().format(y);
double min = d.getStartYValue(series, item);
result[1] = getYFormat().format(min);
double max = d.getEndYValue(series, item);
result[2] = getYFormat().format(max);
return result;
}
});