Chart with Time on x-Axis and Number on y-Axis [message #242642] |
Thu, 14 June 2007 04:22  |
Eclipse User |
|
|
|
Originally posted by: Stephan.Arenswald.gmx.de
Hello,
I'm trying to make a chart with a time scale on the x-Axis and and
number series on the y-Axis. But I get the following exception when
starting the program.
org.eclipse.birt.chart.exception.ChartException: Lines may not be
rendered on a value scale
at org.eclipse.birt.chart.render.Line.renderSeries(Line.java:15 4)
at
org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRe nderer.java:2256)
at org.eclipse.birt.chart.render.AxesRenderer.render(AxesRender er.java:303)
at org.eclipse.birt.chart.factory.Generator.render(Generator.ja va:1231)
at test.SwingLiveChartViewer.paint(SwingLiveChartViewer.java:17 3)
I've read another newsgroup article from 10/24/2006 where there was the
same problem with a bar chart. The solution was to remove the Exception
from Bar.java on line 128.
Is there any other workaround i can use, so that I don't have to change
the source code? Or did I something wrong while creating the chart.
public static final Chart createSimpleLineChart()
{
ChartWithAxes cwaBar = ChartWithAxesImpl.create();
cwaBar.getBlock().setBackground(ColorDefinitionImpl.WHITE()) ;
Plot p = cwaBar.getPlot();
p.getClientArea().setBackground(ColorDefinitionImpl.create(2 55,
255, 225));
cwaBar.getTitle().getLabel().getCaption().setValue("Test");
Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
xAxisPrimary.setType(AxisType.DATE_TIME_LITERAL);
xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LIT ERAL);
xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITE RAL);
xAxisPrimary.getTitle().setVisible(false);
Axis yAxisPrimary = cwaBar.getPrimaryOrthogonalAxis(xAxisPrimary);
yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITE RAL);
Date now = new Date(new Date().getTime());
Date oneHourAgo = new Date(now.getTime() - 3600000 );
DateTimeDataSet dateTimeValues = DateTimeDataSetImpl.create(
new CDateTime[] {
new CDateTime(oneHourAgo),
new CDateTime(now)});
Series dateTimeSeries = SeriesImpl.create();
dateTimeSeries.setDataSet(dateTimeValues);
SeriesDefinition xseriesDefinition = SeriesDefinitionImpl.create();
xseriesDefinition.getSeriesPalette().update(0);
xAxisPrimary.getSeriesDefinitions().add(xseriesDefinition);
xseriesDefinition.getSeries().add(dateTimeSeries);
ArrayList v= new ArrayList();
Random gen = new Random();
for (int i = 0; i < 2; i++) {
v.add(new Double(gen.nextInt(100)));
}
NumberDataSet values = NumberDataSetImpl.create(v);
Series ls = LineSeriesImpl.create();
ls.setSeriesIdentifier("Some Data");
ls.setDataSet(values);
ls.getLabel().setVisible(true);
SeriesDefinition sdY = SeriesDefinitionImpl.create();
sdY.getSeriesPalette().update(1); // SET THE COLORS IN THE PALETTE
yAxisPrimary.getSeriesDefinitions().add(sdY);
sdY.getSeries().add(ls);
return cwaBar;
}
Hope you can help me.
Best Regards,
Stephan
|
|
|
Re: Chart with Time on x-Axis and Number on y-Axis [message #242656 is a reply to message #242642] |
Thu, 14 June 2007 05:04  |
Eclipse User |
|
|
|
This has been fixed in 2.2. You can also use a scatter chart for now.
Thanks,
David
"Stephan Arenswald" <Stephan.Arenswald@gmx.de> wrote in message
news:f4qtui$aov$1@build.eclipse.org...
> Hello,
>
> I'm trying to make a chart with a time scale on the x-Axis and and number
> series on the y-Axis. But I get the following exception when starting the
> program.
>
> org.eclipse.birt.chart.exception.ChartException: Lines may not be rendered
> on a value scale
> at org.eclipse.birt.chart.render.Line.renderSeries(Line.java:15 4)
> at
> org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRe nderer.java:2256)
> at
> org.eclipse.birt.chart.render.AxesRenderer.render(AxesRender er.java:303)
> at org.eclipse.birt.chart.factory.Generator.render(Generator.ja va:1231)
> at test.SwingLiveChartViewer.paint(SwingLiveChartViewer.java:17 3)
>
>
> I've read another newsgroup article from 10/24/2006 where there was the
> same problem with a bar chart. The solution was to remove the Exception
> from Bar.java on line 128.
> Is there any other workaround i can use, so that I don't have to change
> the source code? Or did I something wrong while creating the chart.
>
> public static final Chart createSimpleLineChart()
> {
> ChartWithAxes cwaBar = ChartWithAxesImpl.create();
> cwaBar.getBlock().setBackground(ColorDefinitionImpl.WHITE()) ;
> Plot p = cwaBar.getPlot();
>
> p.getClientArea().setBackground(ColorDefinitionImpl.create(2 55, 255,
> 225));
> cwaBar.getTitle().getLabel().getCaption().setValue("Test");
>
> Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
> xAxisPrimary.setType(AxisType.DATE_TIME_LITERAL);
> xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LIT ERAL);
> xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITE RAL);
> xAxisPrimary.getTitle().setVisible(false);
>
> Axis yAxisPrimary = cwaBar.getPrimaryOrthogonalAxis(xAxisPrimary);
> yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITE RAL);
>
> Date now = new Date(new Date().getTime());
> Date oneHourAgo = new Date(now.getTime() - 3600000 );
>
> DateTimeDataSet dateTimeValues = DateTimeDataSetImpl.create(
> new CDateTime[] {
> new CDateTime(oneHourAgo),
> new CDateTime(now)});
> Series dateTimeSeries = SeriesImpl.create();
> dateTimeSeries.setDataSet(dateTimeValues);
>
> SeriesDefinition xseriesDefinition = SeriesDefinitionImpl.create();
> xseriesDefinition.getSeriesPalette().update(0);
> xAxisPrimary.getSeriesDefinitions().add(xseriesDefinition);
> xseriesDefinition.getSeries().add(dateTimeSeries);
>
> ArrayList v= new ArrayList();
> Random gen = new Random();
> for (int i = 0; i < 2; i++) {
> v.add(new Double(gen.nextInt(100)));
> }
> NumberDataSet values = NumberDataSetImpl.create(v);
>
> Series ls = LineSeriesImpl.create();
> ls.setSeriesIdentifier("Some Data");
> ls.setDataSet(values);
> ls.getLabel().setVisible(true);
>
> SeriesDefinition sdY = SeriesDefinitionImpl.create();
> sdY.getSeriesPalette().update(1); // SET THE COLORS IN THE PALETTE
> yAxisPrimary.getSeriesDefinitions().add(sdY);
> sdY.getSeries().add(ls);
>
> return cwaBar;
> }
>
> Hope you can help me.
>
> Best Regards,
> Stephan
|
|
|
Powered by
FUDForum. Page generated in 0.10026 seconds