【问题标题】:Jfree chart change Y axis datajfree图表改变Y轴数据
【发布时间】:2011-03-12 07:17:00
【问题描述】:

我正在使用 Jfree 图表 0.9.20 的 XYLineChartDemo 来绘制程序中正在运行的进程的执行时间。我的 X 轴表示时间,Y 轴应该表示 Pid。如何编辑 Jfreechart 文件以使我的 Y 轴表示我想要的值而不是数字 0 范围?还有一种方法可以使绘制的线的宽度变粗吗?

【问题讨论】:

    标签: java charts jfreechart linechart


    【解决方案1】:

    研究这个:

    public JFreeChart createChart(String axisX, String axisY){
    
        JFreeChart chart = ChartFactory.createTimeSeriesChart(null, axisX, axisY, dataSeries, true, true, false);
    
        final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
        renderer.setSeriesLinesVisible(0,true);
        renderer.setSeriesShapesVisible(0, true);
    
        //percentage (y-axis)
        final NumberAxis percentAxis = new NumberAxis(axisY);
        percentAxis.setInverted(false);
        percentAxis.setRange(0.0, 100.0);
    
        //time (x-axis)
        final DateAxis timeAxis = new DateAxis(axisX);
        timeAxis.setStandardTickUnits(DateAxis.createStandardDateTickUnits(TimeZone.getDefault(), Locale.ENGLISH));
    
        double range = 0;
    
        switch (format){
            case ONE_MINUTE_RANGE: range = 60*1000; break;
            case TEN_MINUTE_RANGE: range = 10*60*1000; break;
            case ONE_HOUR_RANGE: range = 60*60*1000; break;
        }
    
        timeAxis.setRange(System.currentTimeMillis()-range/2, System.currentTimeMillis()+range/2); //time duration based on format chosen
    
        XYPlot plot = chart.getXYPlot();
        plot.setDomainAxis(timeAxis);
        plot.setRangeAxis(percentAxis);
    
        plot.setBackgroundPaint(Color.white);
        plot.setRangeGridlinePaint(Color.gray);
        plot.setRangeZeroBaselinePaint(Color.gray);
        plot.setDomainGridlinePaint(Color.gray);
        plot.setForegroundAlpha(0.5f);
        plot.setRenderer(renderer);
    
        chart.setBackgroundPaint(Color.white);
    
        return chart;
    }
    

    【讨论】:

    • 谢谢!我已将下限设置为我的最低 pid,将更高的范围设置为最高 pid。有关如何更改 XY 折线图中线条宽度的任何指示?
    • @user644575 你应该使用 ChartPanel 容器来改变你的 JFreeChart 对象的宽度和高度
    • @user644575:对于系列线描边(你称之为“宽度”),使用LineAndShapeRenderer.setSeriesStroke(int series, java.awt.Stroke stroke)方法设置描边。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多