Java StackedXYAreaChart-始终显示错误的序列号
我使用ChartFactory实用程序构建了一个stackedXYAreaChart。我正在尝试生成自定义工具提示。我观察到一个非常奇怪的输出。我的系列4行永远不可见,工具提示也永远不显示。 我做错了什么 这是我的密码:Java StackedXYAreaChart-始终显示错误的序列号,java,jfreechart,Java,Jfreechart,我使用ChartFactory实用程序构建了一个stackedXYAreaChart。我正在尝试生成自定义工具提示。我观察到一个非常奇怪的输出。我的系列4行永远不可见,工具提示也永远不显示。 我做错了什么 这是我的密码: package test; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.Char
package test;
import java.awt.geom.Ellipse2D;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.xy.StackedXYAreaRenderer;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimePeriod;
import org.jfree.data.time.TimeTableXYDataset;
public class Test2
{
public static void main(String args[])
{
TimeTableXYDataset dataset = new TimeTableXYDataset();
for( int i=0; i< 10; i++)
{
TimePeriod period = new Millisecond();
dataset.add(period, i, "Series 1");
dataset.add(period, i + 5, "Series 2");
dataset.add(period, i + 10, "Series 3");
dataset.add(period, i + 15 , "Series 4");
}
JFreeChart chart = ChartFactory.createStackedXYAreaChart(
"Sample Chart", "Time", "Size", dataset, PlotOrientation.VERTICAL, true, true, false);
StackedXYAreaRenderer render = new StackedXYAreaRenderer();
//render.setSeriesShape(0, new Ellipse2D.Double(-3.0, -3.0, 6.0, 6.0));
render.setSeriesToolTipGenerator(0, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(1, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(2, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(3, new StandardXYToolTipGenerator());
chart.getXYPlot().setRenderer(render);
ChartPanel panel = new ChartPanel(chart);
panel.setMouseWheelEnabled(true);
JFrame frame = new JFrame();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
封装测试;
导入java.awt.geom.Ellipse2D;
导入javax.swing.JFrame;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.labels.StandardXYToolTipGenerator;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.renderer.xy.StackedXYAreaRenderer;
导入org.jfree.data.time.毫秒;
导入org.jfree.data.time.TimePeriod;
导入org.jfree.data.time.TimeTableXYDataset;
公共类Test2
{
公共静态void main(字符串参数[])
{
TimeTableXYDataset dataset=新的TimeTableXYDataset();
对于(int i=0;i<10;i++)
{
时间周期=新毫秒();
添加数据集(期间,i,“系列1”);
添加数据集(期间,i+5,“系列2”);
添加数据集(期间,i+10,“系列3”);
添加数据集(期间,i+15,“系列4”);
}
JFreeChart chart=ChartFactory.createStackedXYAreaChart(
“样本图”、“时间”、“大小”、数据集、绘图方向、垂直、真、真、假);
StackedXYAreaRenderer render=新的StackedXYAreaRenderer();
//render.setSeriesShape(0,新的Ellipse2D.Double(-3.0,-3.0,6.0,6.0));
render.SetSeriesToltipGenerator(0,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(1,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(2,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(3,新标准XYToolTipGenerator());
chart.getXYPlot().setRenderer(渲染);
ChartPanel面板=新的ChartPanel(图表);
panel.setMouseWheelEnabled(真);
JFrame=新JFrame();
框架。添加(面板);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
修改由factory方法创建的StackedXYAreaRenderer 2
而不是创建新的StackedXYAreaRenderer
或者,使用作为创建自定义图表的指南
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StackedXYAreaRenderer2;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimePeriod;
import org.jfree.data.time.TimeTableXYDataset;
public class Test2 {
public static void main(String args[]) {
TimeTableXYDataset dataset = new TimeTableXYDataset();
for (int i = 0; i < 10; i++) {
TimePeriod period = new Millisecond();
dataset.add(period, i, "Series 1");
dataset.add(period, i + 5, "Series 2");
dataset.add(period, i + 10, "Series 3");
dataset.add(period, i + 15, "Series 4");
}
JFreeChart chart = ChartFactory.createStackedXYAreaChart(
"Sample Chart", "Time", "Size", dataset, PlotOrientation.VERTICAL, true, true, false);
XYPlot plot = (XYPlot) chart.getPlot();
StackedXYAreaRenderer2 render = (StackedXYAreaRenderer2) plot.getRenderer();
render.setSeriesToolTipGenerator(0, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(1, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(2, new StandardXYToolTipGenerator());
render.setSeriesToolTipGenerator(3, new StandardXYToolTipGenerator());
chart.getXYPlot().setRenderer(render);
ChartPanel panel = new ChartPanel(chart);
panel.setMouseWheelEnabled(true);
JFrame frame = new JFrame();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
import javax.swing.JFrame;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.labels.StandardXYToolTipGenerator;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.StackedXYAreaRenderer2;
导入org.jfree.data.time.毫秒;
导入org.jfree.data.time.TimePeriod;
导入org.jfree.data.time.TimeTableXYDataset;
公共类Test2{
公共静态void main(字符串参数[]){
TimeTableXYDataset dataset=新的TimeTableXYDataset();
对于(int i=0;i<10;i++){
时间周期=新毫秒();
添加数据集(期间,i,“系列1”);
添加数据集(期间,i+5,“系列2”);
添加数据集(期间,i+10,“系列3”);
添加数据集(期间,i+15,“系列4”);
}
JFreeChart chart=ChartFactory.createStackedXYAreaChart(
“样本图”、“时间”、“大小”、数据集、绘图方向、垂直、真、真、假);
XYPlot=(XYPlot)chart.getPlot();
StackedXYAreaRenderer2 render=(StackedXYAreaRenderer2)plot.getRenderer();
render.SetSeriesToltipGenerator(0,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(1,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(2,新标准XYToolTipGenerator());
render.SetSeriesToltipGenerator(3,新标准XYToolTipGenerator());
chart.getXYPlot().setRenderer(渲染);
ChartPanel面板=新的ChartPanel(图表);
panel.setMouseWheelEnabled(真);
JFrame=新JFrame();
框架。添加(面板);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
StackedXYArea渲染器支持形状。将渲染器用作:
StackedXYAreaRenderer render = new StackedXYAreaRenderer(StackedXYAreaRenderer.AREA_AND_SHAPES);
StackedXYAreaRender2不支持形状 这绝对有帮助。还有一个问题-我需要在每个数据点显示形状。我不能那样做。你知道吗@垃圾桶
StackedXYAreaRenderer2
不支持建议的形状;您需要使用StackedXYAreaRenderer
创建图表,它确实可以。
StackedXYAreaRenderer render = new StackedXYAreaRenderer(StackedXYAreaRenderer.AREA_AND_SHAPES);