自定义Jfreechart中X轴的坐标名

JFreeChart 自定义 X 轴
本文介绍如何使用 JFreeChart 实现自定义 X 轴标签的方法,通过实例展示了如何设置 X 轴上的坐标刻度名字,解决时间间隔不均匀导致的图表显示问题。

很多朋友看了我以前的一篇关于jfreechart+sql实现时间曲线图后都来问我,有没有可以自定义x轴坐标刻度名字的方法,其实在我写了那篇文章之后,我发现了时间曲线图的一些问题,例如时间间隔不平均的情况下,曲线图成形难看,且x轴时间显示不够人性化,当然这也可能是我没有发现处理好这个问题的方法。。。之后我还是使用了另一个方法去完成了那个客户的时间曲线图要求,就是使用了x轴坐标自定义的方法。。

关于如何配置Jfreechart等的具体内容可以参考我以前的文章:jfreechart+sql实现时间曲线图

Demo :

<%@ page import="java.awt.*,
javax.swing.JPanel,
org.jfree.chart.*,
org.jfree.chart.axis.*,
org.jfree.chart.plot.*,
org.jfree.chart.renderer.category.LineAndShapeRenderer,
org.jfree.data.category.CategoryDataset,
org.jfree.data.category.DefaultCategoryDataset,
org.jfree.chart.renderer.xy.XYLineAndShapeRenderer,
org.jfree.chart.title.TextTitle,
org.jfree.chart.servlet.ServletUtilities"%>
<%
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
int Y=1,Y1=2;
String X="X1",X2="X2";
defaultcategorydataset.addValue(Y,"Avg",X);  
defaultcategorydataset.addValue(Y1,"Avg",X1); 
//Y是Y轴的数值,X是你在X轴自己定义的字符,"Avg"是两边数据对应的曲线图名,可以依靠定义不同的名字来添加多条曲线
      CategoryDataset createDataset=(CategoryDataset) defaultcategorydataset;
        
        JFreeChart jfreechart = ChartFactory.createLineChart("title", "Date", "Data", createDataset, PlotOrientation.VERTICAL, true, true,false);
        TextTitle texttitle=new TextTitle(jfree1_title,new Font("黑体",Font.PLAIN,14));
        jfreechart.setTitle(texttitle);
        jfreechart.setBackgroundPaint(Color.white);
        CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
        categoryplot.setBackgroundPaint(Color.white);
        categoryplot.setDomainGridlinePaint(Color.gray);
        categoryplot.setDomainGridlinesVisible(true);
        categoryplot.setRangeGridlinePaint(Color.gray);
        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        numberaxis.setAutoRangeIncludesZero(false);//设置Y轴的数据自动范围,不从0开始
        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
        CategoryAxis categoryaxis = categoryplot.getDomainAxis();
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(1.57));//设置字体倾斜角度的
  lineandshaperenderer.setSeriesShapesVisible(0,true); //设置第一根曲线图的交叉点显示     
 
String filename = ServletUtilities.saveChartAsPNG(jfreechart, 400,200, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border=0 usemap="#<%= filename %>">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值