jfreechart中画createTimeSeriesChart类型图,怎么让折点只显示最大值和最小值!??求教!

lars 2008-09-26 06:05:50

这是代码:
public static void drawSecLineChart(String seccode,String secname) throws IOException, ParseException {
TimeSeries ts =new TimeSeries(seccode, Day.class);
//(convert(varchar(7),getDate())+convert(varchar(5),datepart(year,getDate())-2))
List<SecQuote>list =em.findBySql(SecQuote.class, "select * from SecQuote");
for(SecQuote sq :list){
ts.add(new Day(sq.getId()), sq.getSecQClose());
}


TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(ts);

System.out.println(dataset.getDomainUpperBound(true)+"------------:"+dataset.getDomainLowerBound(true));
JFreeChart chart = ChartFactory.createTimeSeriesChart(
secname,
//lt.XTitle,
"",
//lt.YTitle,
"",
dataset, //得到结果集!
false, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
false // 是否生成URL链接
);

//true,false,false生成底部的标题"-600839.shse" //false,true,false不生成相对应的文件。
saveChart2(chart, seccode,secname);
}

//------------------
public static void saveChart2(JFreeChart chart, String names,String secname)throws IOException, ParseException {
chart.setBackgroundPaint(Color.black);
chart.setPadding(new RectangleInsets(3.0,3.0,3.0,10.0));//调整和xy的距离
// LegendTitle legend = chart.getLegend(0); // 修改图例的字体
// legend.setItemFont(new Font("幼圆", Font.BOLD, 14)); // 取得时间顺序图的Plot对象
// legend.setItemPaint(Color.white);
// legend.setBackgroundPaint(Color.black);
XYPlot plot = (XYPlot) chart.getPlot(); // 取得横轴
Image image = null;
image = ImageIO.read(new File(Messages.getString("vvbackimage1")));
plot.setBackgroundImage(image);

//使用这个方法显示值
XYItemRenderer xrend = (XYItemRenderer)plot.getRenderer();

//这里显示折点值----------怎么控制只显示最大值和最小值了?
xrend.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
xrend.setBaseItemLabelsVisible(true);
// xrend.setBaseToolTipGenerator(generator)
//xrend.setSeriesVisible(0, null, false); //这里是设置第几个集合的数据不显示。
// xrend.setBasePositiveItemLabelPosition(position, notify)
//xrend.setBaseNegativeItemLabelPosition(new ItemLabelPosition());



xrend.setBaseItemLabelFont(new Font("Impact", Font.ITALIC, 14)); //设置折点上的值的字体
xrend.setBaseItemLabelPaint(Color.yellow);
//

DateAxis categoryAxis = (DateAxis) plot.getDomainAxis(); // 设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font(Messages.getString("fonttype"), Font.ITALIC, Integer.parseInt(Messages.getString("fontsize"))));
categoryAxis.setTickLabelFont(new Font(Messages.getString("fonttype"), Font.PLAIN, Integer.parseInt(Messages.getString("fontsize"))));
categoryAxis.setPositiveArrowVisible(false);


// Color col = new Color(234,123,62);
// categoryAxis.setTickLabelPaint(col);// 横轴下的字体颜色
// categoryAxis.setLabelPaint(col);// 横轴主字体颜色
// categoryAxis.setLabelAngle(0.1);
// categoryAxis.setVerticalTickLabels(true);


Color col = new Color(234,123,62);
categoryAxis.setTickLabelPaint(col);// 横轴下的字体颜色
categoryAxis.setLabelPaint(col);// 横轴主字体颜色

categoryAxis.setUpperMargin(0.05); //右间距

//设置时间的序列
// SegmentedTimeline s = SegmentedTimeline.newMondayThroughFridayTimeline();
// List el = holidays();
// s.addExceptions(el);
// Calendar c = Calendar.getInstance();
// c.set(c.YEAR, 2006);
//
// Calendar d = Calendar.getInstance();
// Range range = new Range(c.getTimeInMillis(),d.getTimeInMillis());
// categoryAxis.setRange(range);
// categoryAxis.setAutoRange(false);
// categoryAxis.setTimeline(s);
//DateTickUnit dt = new DateTickUnit(DateTickUnit.MONTH, Integer.parseInt(Messages.getString("interval_mon2")));//,DateTickUnit.DAY,10,new SimpleDateFormat("yyyy-MM"));


DateTickUnit dt = new DateTickUnit(DateTickUnit.DAY, 120);
categoryAxis.setTickUnit(dt);
categoryAxis.setDateFormatOverride(new SimpleDateFormat("yy-MM-dd"));
// 取得纵轴

NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();
// 设置纵轴显示标签的字体
//numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));
numberAxis.setLabelFont(new Font(Messages.getString("fonttype"), Font.PLAIN, Integer.parseInt(Messages.getString("fontsize"))));
numberAxis.setTickLabelFont(new Font(Messages.getString("fonttype"), Font.PLAIN, Integer.parseInt(Messages.getString("fontsize"))));
//numberAxis.setLabelAngle(1.5);


Color col2 = new Color(80,217,209);
numberAxis.setTickLabelPaint(col2);
numberAxis.setLabelPaint(col2);

chart.getTitle().setBackgroundPaint(Color.BLACK);
chart.getTitle().setPaint(Color.orange);

//设置标题颜色
plot.setBackgroundPaint(Color.black);
plot.setWeight(10);
plot.getRenderer().setSeriesItemLabelPaint(0, col2);
plot.getRenderer().setSeriesPaint(0, col2);
plot.setOutlinePaint(Color.white);




BasicStroke bs = new BasicStroke(1);//设置边框的粗细

//设置中央图的风格
plot.setOutlineStroke(bs);
plot.setDomainCrosshairPaint(Color.GREEN);
plot.setQuadrantPaint(0, Color.PINK);
plot.setDomainGridlinePaint(Color.yellow);
plot.setRangeGridlinePaint(Color.GREEN);

FileOutputStream fos = null;
String path = Messages.getString("savepath");
String name = names + ".png";

File f = new File(path + name);
if (!f.getParentFile().exists())
f.getParentFile().mkdirs();
fos = new FileOutputStream(f);// 将统计图标输出成JPG文件

ChartUtilities.writeChartAsPNG(fos, // 输出到哪个输出流
chart, // 统计图标对象
//800, // 宽
555,
//600,// 高
334,
null // ChartRenderingInfo 信息
);
fos.close();
}
...全文
1208 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhd030 2009-04-12
  • 打赏
  • 举报
回复
想要一个曲线的,不过得自己写了~~
zhangpeixv 2009-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sunxing007 的回复:]
我觉得这种情况楼主应该看它的文档, 毕竟这个东西不是太流行, 大家都用的不多, 即使用过也没用处经验, 我也只用它来做过一个demo. 还是你自己去度doc比较好, 把它变成自己的东西.
[/Quote]

我知道可以设最大最小值
但是只显示这两个点没有用过啊
honglang_j 2009-01-19
  • 打赏
  • 举报
回复
有没有画折线图的例子啊.
zhanghua4109 2008-10-06
  • 打赏
  • 举报
回复
package nc.ui.test.chart;

import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChart3DDemo3 extends ApplicationFrame
{

public BarChart3DDemo3(String s)
{
super(s);
CategoryDataset categorydataset = createDataset();
JFreeChart jfreechart = createChart(categorydataset);
ChartPanel chartpanel = new ChartPanel(jfreechart);
chartpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartpanel);
}

private static CategoryDataset createDataset()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(25D, "Series 1", "Category 1");
defaultcategorydataset.addValue(34D, "Series 1", "Category 2");
defaultcategorydataset.addValue(19D, "Series 2", "Category 1");
defaultcategorydataset.addValue(29D, "Series 2", "Category 2");
defaultcategorydataset.addValue(41D, "Series 3", "Category 1");
defaultcategorydataset.addValue(33D, "Series 3", "Category 2");
return defaultcategorydataset;
}

private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createBarChart3D("3D Bar Chart Demo", "Category", "Value", categorydataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot categoryplot = jfreechart.getCategoryPlot();
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.39269908169872414D));
CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer();
categoryitemrenderer.setItemLabelsVisible(true);
BarRenderer barrenderer = (BarRenderer)categoryitemrenderer;
barrenderer.setItemMargin(0.20000000000000001D);
return jfreechart;
}

public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}

public static void main(String args[])
{
BarChart3DDemo3 barchart3ddemo3 = new BarChart3DDemo3("3D Bar Chart Demo 3");
barchart3ddemo3.pack();
RefineryUtilities.centerFrameOnScreen(barchart3ddemo3);
barchart3ddemo3.setVisible(true);
}
}
试一下这个,调试过的
zhanghua4109 2008-10-06
  • 打赏
  • 举报
回复
package nc.ui.test.chart;

import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChart3DDemo3 extends ApplicationFrame
{

public BarChart3DDemo3(String s)
{
super(s);
CategoryDataset categorydataset = createDataset();
JFreeChart jfreechart = createChart(categorydataset);
ChartPanel chartpanel = new ChartPanel(jfreechart);
chartpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartpanel);
}

private static CategoryDataset createDataset()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(25D, "Series 1", "Category 1");
defaultcategorydataset.addValue(34D, "Series 1", "Category 2");
defaultcategorydataset.addValue(19D, "Series 2", "Category 1");
defaultcategorydataset.addValue(29D, "Series 2", "Category 2");
defaultcategorydataset.addValue(41D, "Series 3", "Category 1");
defaultcategorydataset.addValue(33D, "Series 3", "Category 2");
return defaultcategorydataset;
}

private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createBarChart3D("3D Bar Chart Demo", "Category", "Value", categorydataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot categoryplot = jfreechart.getCategoryPlot();
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.39269908169872414D));
CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer();
categoryitemrenderer.setItemLabelsVisible(true);
BarRenderer barrenderer = (BarRenderer)categoryitemrenderer;
barrenderer.setItemMargin(0.20000000000000001D);
return jfreechart;
}

public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}

public static void main(String args[])
{
BarChart3DDemo3 barchart3ddemo3 = new BarChart3DDemo3("3D Bar Chart Demo 3");
barchart3ddemo3.pack();
RefineryUtilities.centerFrameOnScreen(barchart3ddemo3);
barchart3ddemo3.setVisible(true);
}
}
试一下这个,调试过的
kissclf 2008-10-05
  • 打赏
  • 举报
回复
很早以前用过~! 现在都回想不起来了
感觉JFreeChart配置复杂
leves1989 2008-10-05
  • 打赏
  • 举报
回复
look document!
sunxing007 2008-09-26
  • 打赏
  • 举报
回复
我觉得这种情况楼主应该看它的文档, 毕竟这个东西不是太流行, 大家都用的不多, 即使用过也没用处经验, 我也只用它来做过一个demo. 还是你自己去度doc比较好, 把它变成自己的东西.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧