domainAxis.setTickMarksVisible(true);
这不是就是要显示刻度吗?

解决方案 »

  1.   

    你好!你看一下下面的代码,可以运行的:(我已经这样设置了,就是不显示,在用CategoryAxis的时候,其他的坐标轴没事)
    package util.src.impl;import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Font;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.annotations.CategoryTextAnnotation;
    import org.jfree.chart.axis.Axis;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryLabelPositions;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.axis.NumberTickUnit;
    import org.jfree.chart.plot.CategoryMarker;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.Plot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.AbstractRenderer;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.data.general.AbstractDataset;import util.src.IPictureUtil;/**
     * 绘制人民币汇率中间价走势图
     * 
     * @author Kong JianLuo
     * @create 2008-6-17
     */
    public class PictureUtil_02 implements IPictureUtil {
    private int size;// 数据的个数 private Double[] value;// 数据值 private String start;// 开始日期 // yyyy-MM-dd HH:mm:ss
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");// 时期格式 private String title = "Centrol Parity(USD)";// 标题 private Font titleFont = new Font("宋体", Font.BOLD, 18);// 标题字体 private Color titleColor = Color.blue;// 标题颜色 private Color pictureBackgroudColor = Color.white;// 图片背景色 private Color plotBackgroudColor = Color.white;// 图表背景色 private Color rangeGridlineColor = Color.black;// 网格线横向颜色 private BasicStroke rangeGridlineStroke = new BasicStroke(0.5f);// 网格线横向线条 private Color tickLabelColor = Color.black;// 坐标轴X标尺值颜色 private Color axisLineColor = Color.gray;// 坐标轴X线条颜色 private CategoryLabelPositions categoryLabelPositions = CategoryLabelPositions.DOWN_90;// //坐标轴X坐标值显示方向 private Font tickLabelFont = new Font("宋体", Font.PLAIN, 12);// 坐标轴X坐标值字体 /**
     * 装载数据
     */
    public AbstractDataset createDataSet(Double[] value, String start,
    String end) {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    size = value.length;
    this.value = value;
    this.start = start;
    Date temp = new Date();
    try {
    temp = sdf.parse(start);
    } catch (ParseException e) {
    e.printStackTrace();
    } for (int i = 0; i < size; i++) {
    dataset.addValue(this.value[i], "", sdf.format(temp));
    temp.setTime(temp.getTime() + 24 * 60 * 60 * 1000);
    }

    return dataset;
    } /**
     * set plot
     */
    public void setPlot(Plot p) {
    CategoryPlot plot = (CategoryPlot) p;
    plot.setBackgroundPaint(this.plotBackgroudColor);
    plot.setRangeGridlinePaint(this.rangeGridlineColor); // 网格线横向颜色
    plot.setRangeGridlineStroke(this.rangeGridlineStroke);
    plot.setRangeGridlinesVisible(true);
    plot.setDomainGridlinesVisible(true);
    plot.setOutlineVisible(false); // 在图表上显示标题
    Date temp = new Date();
    try {
    temp = sdf.parse(this.start);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    temp.setTime(temp.getTime() + 24 * 60 * 60 * 1000 * ((size + 1) / 2));
    CategoryTextAnnotation cta = new CategoryTextAnnotation(this.title, sdf
    .format(temp), this.findMaxData(value));
    cta.setPaint(this.titleColor);
    cta.setFont(this.titleFont);
    plot.addAnnotation(cta);
    // CategoryMarker cm=new CategoryMarker("2006.06.01");
    // cm.setPaint(Color.black);
    // plot.addDomainMarker(cm);

    } /**
     * set y 坐标轴
     */ public void setValueAxis(Axis axis) {
    NumberAxis valueAxis = (NumberAxis) axis;
    valueAxis.setTickLabelsVisible(true);
    valueAxis.setAutoTickUnitSelection(true);
    valueAxis.setVisible(true);
    valueAxis.setTickUnit(new NumberTickUnit(0.02d));
    valueAxis.setTickMarksVisible(false); valueAxis.setAutoRangeIncludesZero(false);
    valueAxis.setNumberFormatOverride(new java.text.DecimalFormat("0.00"));
    } /**
     * set x 坐标轴
     */
    public void setDomainAxis(Axis axis) {
    CategoryAxis domainAxis = (CategoryAxis) axis; domainAxis.setTickLabelPaint(this.tickLabelColor);// 坐标轴标尺值颜色
    domainAxis.setAxisLinePaint(this.axisLineColor);// 坐标轴线条颜色
    System.out.println(domainAxis.getUpperMargin());
    System.out.println(domainAxis.getTickMarkInsideLength());
    System.out.println(domainAxis.getTickMarkOutsideLength());
    System.out.println(domainAxis.getTickMarkPaint());
    System.out.println(domainAxis.getTickMarkStroke());
    System.out.println(domainAxis.getCategoryLabelPositionOffset());
    domainAxis.setTickMarksVisible(true);
    domainAxis.setTickMarkOutsideLength(10f);
    domainAxis.setTickMarkInsideLength(10f);
    domainAxis.setTickMarkStroke(this.rangeGridlineStroke);
    domainAxis.setTickMarkPaint(Color.red);
    domainAxis.setLowerMargin(0.05);
    domainAxis.setUpperMargin(0.05);
    domainAxis.setTickMarksVisible(true);
    domainAxis.setCategoryLabelPositionOffset(20);
    /* domainAxis.setCategoryLabelPositions(CategoryLabelPositions
     .createUpRotationLabelPositions(4.725));*/
    domainAxis.setCategoryLabelPositions(this.categoryLabelPositions);// 坐标轴坐标值显示方向
    domainAxis.setTickLabelFont(this.tickLabelFont);// 坐标轴坐标值字体

    } /**
     * customise the renderer...
     */
    public void setLineAndShapeRenderer(AbstractRenderer r) {
    LineAndShapeRenderer renderer = (LineAndShapeRenderer) r;
    renderer.setPaint(Color.red);
    renderer.setStroke(new BasicStroke(4));
    renderer.setShapesVisible(true);
    renderer.setDrawOutlines(true);
    renderer.setUseFillPaint(true);
    renderer.setFillPaint(Color.white);
    } /**
     * 绘制折线图
     */
    public JFreeChart createPicture(Double[] value, String start, String end) {
    // create chart
    JFreeChart chart = ChartFactory.createLineChart(null, // chart title
    null, // domain axis label
    null, // range axis label
    (CategoryDataset) createDataSet(value, start, end), // data
    PlotOrientation.VERTICAL, // orientation
    false, // include legend
    true, // tooltips
    false // urls
    );
    chart.setBackgroundPaint(this.pictureBackgroudColor); // set plot
    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    setPlot(plot); // set y 轴
    setValueAxis(plot.getRangeAxis()); // set x 轴
    setDomainAxis(plot.getDomainAxis()); // customise the renderer...
    setLineAndShapeRenderer((AbstractRenderer) plot.getRenderer()); return chart;
    } /**
     * 找出最大值
     */
    private Double findMaxData(Double[] value) {
    double temp = value[0];
    for (int i = 0; i < value.length; i++) {
    if (temp < value[i]) {
    temp = value[i];
    }
    }
    return temp;
    }
    }
      

  2.   

    domainAxis.setLowerMargin(0.05);
    domainAxis.setUpperMargin(0.05);
    最大最小都相等了怎么显示?