如何在Java中更改图表比例

如何在Java中更改图表比例,java,swing,awt,java-2d,jfreechart,Java,Swing,Awt,Java 2d,Jfreechart,我有一张图表,其中x轴显示时间,y轴显示数据。 我想通过为x轴选择不同的度量来更改比例。e、 g秒、分和小时刻度。默认值为秒。因此,如果我选择分钟,图表应该更小,更弯曲。有什么想法吗?用户界面尚未完成,但您假设存在x轴和y轴。参数degree决定应将其缩放为秒(degree=1), 分钟(度=60)或小时(度=3600) private void绘图线(图形g、数组列表点、整数度)引发异常{ if(points==null | | points.isEmpty()){ 抛出新异常(“未找到任何点

我有一张图表,其中x轴显示时间,y轴显示数据。 我想通过为x轴选择不同的度量来更改比例。e、 g秒、分和小时刻度。默认值为秒。因此,如果我选择分钟,图表应该更小,更弯曲。有什么想法吗?用户界面尚未完成,但您假设存在x轴和y轴。参数degree决定应将其缩放为秒(degree=1), 分钟(度=60)或小时(度=3600)

private void绘图线(图形g、数组列表点、整数度)引发异常{
if(points==null | | points.isEmpty()){
抛出新异常(“未找到任何点!!!”;
}
对于(int i=0;i
考虑使用,它缩放图形以填充封闭容器。在所看到的示例中,封闭容器是一个
图表面板
,它添加到框架默认的
边框布局的
中心
。这将允许图形随着封闭框架的大小而增长和收缩

通用方案使用映射模型和视图坐标。给定以下比例,您可以交叉乘法并求解缺少的坐标,如将鼠标坐标映射到图像中像素坐标的完整示例所示

view.x:panelWidthInPixels::model.x:modelXRange
view.y:panelHeightInPixels::model.y:modelRange
我不想使用
JFreeChart
。还有别的办法吗

是的,作为@MadProgrammer,你可以

  • 使用上面显示的比例将数据缩放到封闭容器。所引用的基本方法;这是一个功能齐全的示例

  • 使用
    buffereImage
    将渲染图像缩放到封闭容器。此
    ComponentHandler
    绘制到一个
    buffereImage
    中,该图像的大小可填充封闭的
    JPanel
    background
    图像是在
    paintComponent()的实现中呈现的。调整框架大小以查看效果

  • 使用应用于图形上下文的变换将渲染图像缩放到封闭容器。给出了典型示例,并进行了分析


代码在哪里?这是什么样的图表?jfreechart?不,不是jfreechart。我添加了代码您有很多选择,您可以缩放数据中的点,也可以缩放
图形
上下文。第一种方法需要对数据进行标准化(介于1-0之间),以便有一个参考点进行缩放from@MadProgrammer:仅供参考,请在视图中缩放。@trashgood并非所有人都允许使用第三方库;)非常感谢。但是,我不想使用JFreechat。还有别的办法吗?我已经在上面详细阐述了。
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());
    }

}