先简单介绍一下目前程序情况: 多个图表(Plot)按网格布局组成的一个大Panel;图例是由plot自动生成;
问题:如果是由plot自动生成的话,那么会有多个图例对应多个图表;
可我想实现的是整体的图例,那么图例应该怎么放?怎样对应呢(对应某一个图表好象不太好)?附加一个小问题:在JFreeChart中可以设置标题可见吗?好象没找到.
问题:如果是由plot自动生成的话,那么会有多个图例对应多个图表;
可我想实现的是整体的图例,那么图例应该怎么放?怎样对应呢(对应某一个图表好象不太好)?附加一个小问题:在JFreeChart中可以设置标题可见吗?好象没找到.
但是需要自己控制呢?不知道到底操作哪个对象;
package demo;import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.MultiplePiePlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.TableOrder;public class MultiplePieChartDemo1 extends ApplicationFrame
{ public MultiplePieChartDemo1(String s)
{
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(600, 380));
setContentPane(jpanel);
} private static CategoryDataset createDataset()
{
double ad[][] = {
{
3D, 4D, 3D, 5D
}, {
5D, 7D, 6D, 8D
}, {
5D, 7D, (0.0D / 0.0D), 3D
}, {
1.0D, 2D, 3D, 4D
}, {
2D, 3D, 2D, 3D
}
};
CategoryDataset categorydataset = DatasetUtilities.createCategoryDataset("Region ", "Sales/Q", ad);
return categorydataset;
} private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createMultiplePieChart("Multiple Pie Chart", categorydataset, TableOrder.BY_ROW, true, true, false);
MultiplePiePlot multiplepieplot = (MultiplePiePlot)jfreechart.getPlot();
JFreeChart jfreechart1 = multiplepieplot.getPieChart();
PiePlot pieplot = (PiePlot)jfreechart1.getPlot();
pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}"));
pieplot.setLabelFont(new Font("SansSerif", 0, 8));
return jfreechart;
} public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
} public static void main(String args[])
{
MultiplePieChartDemo1 multiplepiechartdemo1 = new MultiplePieChartDemo1("Multiple Pie Chart Demo 1");
multiplepiechartdemo1.pack();
RefineryUtilities.centerFrameOnScreen(multiplepiechartdemo1);
multiplepiechartdemo1.setVisible(true);
}
}
* all LegendTitles.
*/
BlockContainer blockcontainer = new BlockContainer(new BorderArrangement());
/**
* XYPlot
*/
for (int i = 0; i < axydataset.length; i++) {
XYItemRenderer standardxyitemrenderer1;
standardxyitemrenderer1 = jfreechart.getXYPlot().getRenderer();
standardxyitemrenderer1.setStroke(new BasicStroke(0.5f));
if (standardxyitemrenderer1 instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer xylineandshaperenderer = (
XYLineAndShapeRenderer) standardxyitemrenderer1;
xylineandshaperenderer.setShape(new CurveCircle( -1.0d,
-1.0d, 2.0d));
xylineandshaperenderer.setBaseShapesVisible(true);
xylineandshaperenderer.setBaseShapesFilled(false);
xylineandshaperenderer.setBaseItemLabelsVisible(true);
}
/**
* setting subtitle
*/
LegendTitle legendtitle = new LegendTitle(standardxyitemrenderer1);
legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
legendtitle.setBorder(new BlockBorder());
if (i % 2 == 0) {
blockcontainer.add(legendtitle, RectangleEdge.RIGHT);
}
else {
blockcontainer.add(legendtitle, RectangleEdge.LEFT);
}
}
我也在弄这个类似的问题啊,你所说的问题,我觉得跟我刚解决掉的差不多,发来跟你交流下!!!