如何在Java中更改图表比例[英] How to change diagram Scale in Java

问题描述

在此处输入图像描述

我有一个图,其中x轴显示时间,y轴显示我的数据. 我想通过选择X轴的不同度量来改变比例.例如,第二,分钟和小时尺度.默认值是秒.因此,如果我选择分钟,图表应该更小并且更弯曲.任何想法? ui未完成,但是您假设存在x和y轴.参数度决定它应该缩放到第二(度= 1), 分钟(度= 60)或小时(度= 3600)

private void drawLines(Graphics g, ArrayList<Point> points,int degree) throws Exception {

    if (points == null || points.isEmpty()) {
        throw new Exception("No points found!!!");
    }

    for (int i = 0; i < points.size() - 1; i++) {

        Point firstPoint = points.get(i);
        Point secondPoint = points.get(i + 1);

        g.drawLine((int) firstPoint.getX(), (int) firstPoint.getY(), (int) secondPoint.getX(),
                (int) secondPoint.getY());
    }

}

推荐答案

考虑使用,哪个缩放图形以填充封闭容器.在该示例中,在这里看到封闭容器是一个ChartPanel,它被添加到帧默认的CENTER BorderLayout.这将允许图表随着封闭帧调整大小而增长和缩小.

映像

常规方案使用线性插值.鉴于以下比例,您可以跨越和解决缺失的坐标,如此完整所示映射鼠标坐标到图像中的像素坐标.

view.x : panelWidthInPixels :: model.x : modelXRange
view.y : panelHeightInPixels :: model.y : modelYRange

我不想使用JFreeChart.有没有其他方式?

是,如@madprogrogmer/a>,你可以

  • 使用上面所示的比例将数据缩放到封闭容器. 例子引用的分离基本方法; JFreeChart 是一个完整的特色示例.<​​/p>

  • 使用BufferedImage将渲染图像缩放到封闭容器.这个示例的 ComponentHandler绘制成一个尺寸以填充封闭JPanel的BufferedImage.在paintComponent()的实现中呈现background图像.调整帧大小以查看效果.

  • 使用应用于图形上下文的变换将渲染图像缩放到封闭容器.典型的例子显示在这里 这里.

本文地址:https://www.itbaoku.cn/post/978397.html