From: Andrew P. <an...@ed...> - 2006-08-07 09:52:23
|
Hi There I have had problems with the MeterPlot drawing of legends as they are = displayed to far down when you reduce the radius of the meter. Is it possible for someone to add code that adjusts the legend position = of meterplots depending on the radius specifed, like something below. (in the drawTitle method of JFreeChart) else if (position =3D=3D RectangleEdge.BOTTOM) { Size2D size =3D t.arrange(g2, constraint); =20 // modified to raise the height of the Thermometers legend Rectangle2D titleAreaTemp =3D createAlignedRectangle2D(size, = area,=20 t.getHorizontalAlignment(), = VerticalAlignment.BOTTOM); =20 if (plot instanceof MeterPlot) { int percent =3D 100; MeterPlot mPlot =3D (MeterPlot)plot; if(mPlot.getMeterAngle() <=3D 200) { percent =3D 25; } else if(mPlot.getMeterAngle() <=3D 260) { percent =3D 20; } // move up n% double yAdjusted =3D (hh * percent) / 100; titleArea =3D new Rectangle2D.Double(titleAreaTemp.getX(), titleAreaTemp.getY() - yAdjusted, titleAreaTemp .getWidth(), titleAreaTemp.getHeight()); } else { titleArea =3D titleAreaTemp; } =20 retValue =3D t.draw(g2, titleArea, p); area.setRect(area.getX(), area.getY(), area.getWidth(),=20 area.getHeight() - size.height); } This feature would be much appreciated. Thanks Andrew Powell |
From: David G. <dav...@ob...> - 2006-08-17 09:33:08
|
Andrew Powell wrote: > Hi There > > I have had problems with the MeterPlot drawing of legends as they are > displayed to far down when you reduce the radius of the meter. > > Is it possible for someone to add code that adjusts the legend > position of meterplots depending on the radius specifed, like > something below. > > (in the drawTitle method of JFreeChart) > > else if (position == RectangleEdge.BOTTOM) { > Size2D size = t.arrange(g2, constraint); > > // modified to raise the height of the Thermometers legend > Rectangle2D titleAreaTemp = createAlignedRectangle2D(size, > area, > t.getHorizontalAlignment(), VerticalAlignment.BOTTOM); > > * if (plot instanceof MeterPlot) { > int percent = 100; > MeterPlot mPlot = (MeterPlot)plot; > if(mPlot.getMeterAngle() <= 200) { > percent = 25; > } else if(mPlot.getMeterAngle() <= 260) { > percent = 20; > } > // move up n% > double yAdjusted = (hh * percent) / 100; > titleArea = new Rectangle2D.Double(titleAreaTemp.getX(), > titleAreaTemp.getY() - yAdjusted, titleAreaTemp > .getWidth(), titleAreaTemp.getHeight()); > } else { > titleArea = titleAreaTemp; > }* > > retValue = t.draw(g2, titleArea, p); > area.setRect(area.getX(), area.getY(), area.getWidth(), > area.getHeight() - size.height); > } > > This feature would be much appreciated. > > Thanks > > Andrew Powell Hi Andrew, I don't like the idea of such "plot specific" code going into the JFreeChart class, so you might have to perservere with a local patch on your version of JFreeChart. Going forward, there might be a couple of ways to resolve the problem you are encountering: (1) I'd like to provide a general mechanism for displaying chart titles within the plot area (rather than just around the edges as you can do now). This would allow you to place the legend at (say) the lower right corner of the plot area, which perhaps fixes the problem for you; (2) I plan to work on a new DialPlot class to replace the existing MeterPlot class which has a few too many limitations. In terms of time frame, I hope to have these two features done by the end of the year. Regards, Dave |