高分求助,请问用jfreeChart画图,可以在一个图上同时画柱状图和折线图吗? 最好能给个简单的例子,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lz可以去找找 JFreeChart 混合图 的一些资料网上很多的 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【weichenggao】截止到2008-07-08 11:47:46的历史汇总数据(不包括此帖):发帖的总数量:10 发帖的总分数:1340 每贴平均分数:134 回帖的总数量:104 得分贴总数量:69 回帖的得分率:66% 结贴的总数量:9 结贴的总分数:1140 无满意结贴数:0 无满意结贴分:0 未结的帖子数:1 未结的总分数:200 结贴的百分比:90.00 % 结分的百分比:85.07 % 无满意结贴率:0.00 % 无满意结分率:0.00 % 值得尊敬 jfreeChart上很多例子,很多网友提供了付费才能拿到的例子 http://www.jfree.org/jfreechart/samples.html第六个图就是你要的效果了吧 代码比较多,注释就没怎么写了,看看文档//定义柱状的数据集//图例中每个柱子的名称 String s = "S1"; String s1 = "S2"; String s2 = "S3";//横坐标点的名称 String s3 = "Cate 1"; String s4 = "Cate 2"; String s5 = "Cate 3"; String s6 = "Cate 4"; String s7 = "Cate 5"; String s8 = "Cate 6"; String s9 = "Cate 7"; String s10 = "Cate 8";//加数据 DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); defaultcategorydataset.addValue(1.0D, s, s3); defaultcategorydataset.addValue(4D, s, s4); defaultcategorydataset.addValue(3D, s, s5); defaultcategorydataset.addValue(5D, s, s6); defaultcategorydataset.addValue(5D, s, s7); defaultcategorydataset.addValue(7D, s, s8); defaultcategorydataset.addValue(7D, s, s9); defaultcategorydataset.addValue(8D, s, s10); defaultcategorydataset.addValue(5D, s1, s3); defaultcategorydataset.addValue(7D, s1, s4); defaultcategorydataset.addValue(6D, s1, s5); defaultcategorydataset.addValue(8D, s1, s6); defaultcategorydataset.addValue(4D, s1, s7); defaultcategorydataset.addValue(4D, s1, s8); defaultcategorydataset.addValue(2D, s1, s9); defaultcategorydataset.addValue(1.0D, s1, s10); defaultcategorydataset.addValue(4D, s2, s3); defaultcategorydataset.addValue(3D, s2, s4); defaultcategorydataset.addValue(2D, s2, s5); defaultcategorydataset.addValue(3D, s2, s6); defaultcategorydataset.addValue(6D, s2, s7); defaultcategorydataset.addValue(3D, s2, s8); defaultcategorydataset.addValue(4D, s2, s9); defaultcategorydataset.addValue(3D, s2, s10);//--下面开始画chart-------------- JFreeChart jfreechart = ChartFactory.createBarChart("Dual Axis Chart", "Category", "Value", defaultcategorydataset , PlotOrientation.VERTICAL, false, true, false); jfreechart.setBackgroundPaint(Color.white); CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot(); categoryplot.setBackgroundPaint(new Color(238, 238, 255)); categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);//---------------------------------------//在这里开始加入折线//先定义折线的数据集 DefaultCategoryDataset defaultcategorydataset2 = new DefaultCategoryDataset(); defaultcategorydataset2.addValue(15D, "S4", "Cate1"); defaultcategorydataset2.addValue(24D, "S4", "Cate2"); defaultcategorydataset2.addValue(31D, "S4", "Cate3"); defaultcategorydataset2.addValue(25D, "S4", "Cate4"); defaultcategorydataset2.addValue(56D, "S4", "Cate5"); defaultcategorydataset2.addValue(37D, "S4", "Cate6"); defaultcategorydataset2.addValue(77D, "S4", "Cate7"); defaultcategorydataset2.addValue(18D, "S4", "Cate8");//-映射折线数据集-------- categoryplot.setDataset(1, categorydataset2); categoryplot.mapDatasetToRangeAxis(1, 1); CategoryAxis categoryaxis = categoryplot.getDomainAxis(); categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45); NumberAxis numberaxis = new NumberAxis("Secondary");//折线对应的纵坐标的名称 categoryplot.setRangeAxis(1, numberaxis); //定义折线的显示样式 LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer(); lineandshaperenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator()); categoryplot.setRenderer(1, lineandshaperenderer); categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); LegendTitle legendtitle = new LegendTitle(categoryplot.getRenderer(0)); legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendtitle.setBorder(new BlockBorder()); LegendTitle legendtitle1 = new LegendTitle(categoryplot.getRenderer(1)); legendtitle1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendtitle1.setBorder(new BlockBorder()); BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); blockcontainer.add(legendtitle, RectangleEdge.LEFT); blockcontainer.add(legendtitle1, RectangleEdge.RIGHT); blockcontainer.add(new EmptyBlock(2000D, 0.0D)); CompositeTitle compositetitle = new CompositeTitle(blockcontainer); compositetitle.setPosition(RectangleEdge.BOTTOM); jfreechart.addSubtitle(compositetitle);//图形画完了,下面输出就可以了............ 新人求解…… 求教一个 初学者的问题 菜鸟问题:读文本区 JAVA里传送换行符的问题。 写在JPanel中的button怎么使JFrame刷新。 初学者的困惑 菜鸟问题,望大虾帮忙! jar文件,不知道错在那里? 请教一个很简单的有关FoucusEvent类中isTemporary方法的问题! System.in.read()? 关于Runtime.getRuntime().exec(cmd)的问题 如何扩大java虚拟机内存?
楼主【weichenggao】截止到2008-07-08 11:47:46的历史汇总数据(不包括此帖):
发帖的总数量:10 发帖的总分数:1340 每贴平均分数:134
回帖的总数量:104 得分贴总数量:69 回帖的得分率:66%
结贴的总数量:9 结贴的总分数:1140
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:200
结贴的百分比:90.00 % 结分的百分比:85.07 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
第六个图就是你要的效果了吧
//图例中每个柱子的名称
String s = "S1";
String s1 = "S2";
String s2 = "S3";
//横坐标点的名称
String s3 = "Cate 1";
String s4 = "Cate 2";
String s5 = "Cate 3";
String s6 = "Cate 4";
String s7 = "Cate 5";
String s8 = "Cate 6";
String s9 = "Cate 7";
String s10 = "Cate 8";
//加数据
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, s, s3);
defaultcategorydataset.addValue(4D, s, s4);
defaultcategorydataset.addValue(3D, s, s5);
defaultcategorydataset.addValue(5D, s, s6);
defaultcategorydataset.addValue(5D, s, s7);
defaultcategorydataset.addValue(7D, s, s8);
defaultcategorydataset.addValue(7D, s, s9);
defaultcategorydataset.addValue(8D, s, s10);
defaultcategorydataset.addValue(5D, s1, s3);
defaultcategorydataset.addValue(7D, s1, s4);
defaultcategorydataset.addValue(6D, s1, s5);
defaultcategorydataset.addValue(8D, s1, s6);
defaultcategorydataset.addValue(4D, s1, s7);
defaultcategorydataset.addValue(4D, s1, s8);
defaultcategorydataset.addValue(2D, s1, s9);
defaultcategorydataset.addValue(1.0D, s1, s10);
defaultcategorydataset.addValue(4D, s2, s3);
defaultcategorydataset.addValue(3D, s2, s4);
defaultcategorydataset.addValue(2D, s2, s5);
defaultcategorydataset.addValue(3D, s2, s6);
defaultcategorydataset.addValue(6D, s2, s7);
defaultcategorydataset.addValue(3D, s2, s8);
defaultcategorydataset.addValue(4D, s2, s9);
defaultcategorydataset.addValue(3D, s2, s10);//--下面开始画chart--------------
JFreeChart jfreechart = ChartFactory.createBarChart("Dual Axis Chart", "Category", "Value", defaultcategorydataset , PlotOrientation.VERTICAL, false, true, false);
jfreechart.setBackgroundPaint(Color.white);
CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
categoryplot.setBackgroundPaint(new Color(238, 238, 255));
categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
//---------------------------------------
//在这里开始加入折线
//先定义折线的数据集
DefaultCategoryDataset defaultcategorydataset2 = new DefaultCategoryDataset();
defaultcategorydataset2.addValue(15D, "S4", "Cate1");
defaultcategorydataset2.addValue(24D, "S4", "Cate2");
defaultcategorydataset2.addValue(31D, "S4", "Cate3");
defaultcategorydataset2.addValue(25D, "S4", "Cate4");
defaultcategorydataset2.addValue(56D, "S4", "Cate5");
defaultcategorydataset2.addValue(37D, "S4", "Cate6");
defaultcategorydataset2.addValue(77D, "S4", "Cate7");
defaultcategorydataset2.addValue(18D, "S4", "Cate8");
//-映射折线数据集--------
categoryplot.setDataset(1, categorydataset2);
categoryplot.mapDatasetToRangeAxis(1, 1);
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
NumberAxis numberaxis = new NumberAxis("Secondary");//折线对应的纵坐标的名称
categoryplot.setRangeAxis(1, numberaxis);
//定义折线的显示样式
LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
lineandshaperenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
categoryplot.setRenderer(1, lineandshaperenderer);
categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
LegendTitle legendtitle = new LegendTitle(categoryplot.getRenderer(0));
legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
legendtitle.setBorder(new BlockBorder());
LegendTitle legendtitle1 = new LegendTitle(categoryplot.getRenderer(1));
legendtitle1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
legendtitle1.setBorder(new BlockBorder());
BlockContainer blockcontainer = new BlockContainer(new BorderArrangement());
blockcontainer.add(legendtitle, RectangleEdge.LEFT);
blockcontainer.add(legendtitle1, RectangleEdge.RIGHT);
blockcontainer.add(new EmptyBlock(2000D, 0.0D));
CompositeTitle compositetitle = new CompositeTitle(blockcontainer);
compositetitle.setPosition(RectangleEdge.BOTTOM);
jfreechart.addSubtitle(compositetitle);
//图形画完了,下面输出就可以了
............