如何在 JFreechart 中获取点的菱形形状

2023-12-09

我需要在 JFreechart 中的时间序列上获得 A 菱形形状,但我无法做到这一点。有人可以指导应该在下面的代码中添加哪些代码来实现钻石形状点以及如何更改线条的颜色吗?

(该程序使用 rs 和 stmt 以及其他从数据库派生并在其他地方定义的东西。该程序现在工作正常,唯一的问题是它看起来超级无聊。)

TimeSeries s1 = new TimeSeries("Technology", Day.class);
TimeSeries s2 = new TimeSeries("Entertainment", Day.class);
TimeSeries s3 = new TimeSeries("Soap", Day.class);
TimeSeries s4 = new TimeSeries("Music", Day.class);
TimeSeries s5 = new TimeSeries("Native", Day.class);
TimeSeries s6 = new TimeSeries("Speciality", Day.class);
TimeSeries s7 = new TimeSeries("Science", Day.class);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date plotdate;


if (!(combo_individualid.getModel().getSize() == 0)) {
    String sql = ""
            + "SELECT * "
            + "FROM   `customerbasetag` "
            + "WHERE  `individual_idindividual` =? ";

    try {
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, combo_individualid.getSelectedItem().toString());
        rs = stmt.executeQuery();

        while (rs.next()) {

            try {
                plotdate = sdf.parse(rs.getString("session_date"));

                s1.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("technology"))));
                s2.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("entertainment"))));
                s3.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("soap"))));
                s4.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("music"))));
                s5.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("native"))));
                s6.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("speciality"))));
                s7.add(new Day(plotdate), new Integer(Integer.parseInt(rs.getString("science"))));


            } catch (ParseException ex) {
                JOptionPane.showMessageDialog(null,
                    "Parse Exception" + ex.getMessage());
            }
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,
            "Error During Session Select" + ex.getMessage());
    }


    /*NOTE: Chart plotting here*/
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(s1);
    dataset.addSeries(s2);
    dataset.addSeries(s3);
    dataset.addSeries(s4);
    dataset.addSeries(s5);
    dataset.addSeries(s6);
    dataset.addSeries(s7);
    JFreeChart chart = ChartFactory.createTimeSeriesChart(
        "TS Chart", "Date", "Value", dataset, true, true, false);

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
    plot.setDomainCrosshairVisible(true);
    plot.setRangeCrosshairVisible(true);

    ChartFrame f = new ChartFrame("Individual Choice Evaluation", chart);
    f.setVisible(true);
    f.setSize(800, 600);
    f.setLocationRelativeTo(null);

} else {

    JOptionPane.showMessageDialog(null, "Please Select an Individual");
}

我已经更新了代码,但它仍然无法正常工作,并且我不断取回旧图表。这是代码。

TimeSeriesCollection dataset = new TimeSeriesCollection();
            dataset.addSeries(s1);
            dataset.addSeries(s2);
            dataset.addSeries(s3);
            dataset.addSeries(s4);
            dataset.addSeries(s5);
            dataset.addSeries(s6);
            dataset.addSeries(s7);
            JFreeChart chart = ChartFactory.createTimeSeriesChart("Time Series Chart for Individual id: "+combo_individualid.getSelectedItem().toString() , "Date", "Value", dataset, true, true, false);



            Shape theShape = ShapeUtilities.createDiamond(1);


            XYPlot plot = (XYPlot) chart.getPlot();
            plot.setBackgroundPaint(Color.lightGray);
            plot.setDomainGridlinePaint(Color.white);
            plot.setRangeGridlinePaint(Color.white);
            plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
            plot.setDomainCrosshairVisible(true);
            plot.setRangeCrosshairVisible(true);



            XYItemRenderer renderer = plot.getRenderer();

            renderer.setSeriesShape(0, theShape);
            renderer.setSeriesShape(1, theShape);
            renderer.setSeriesShape(2, theShape);
            renderer.setSeriesShape(3, theShape);
            renderer.setSeriesShape(4, theShape);
            renderer.setSeriesShape(5, theShape);
            renderer.setSeriesShape(6, theShape);





            ChartFrame f = new ChartFrame("Individual Choice Evaluation", chart);
            f.setVisible(true);
            f.setSize(800, 600);
            f.setLocationRelativeTo(null);

ShapeUtilities.createDiamond()可以打造钻石形状;你可以像这样应用它example不同的Shape.

附录:默认情况下,createTimeSeriesChart()创建一个XYLineAndShapeRenderer您可以如下所示进行修改here.

XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer r = (XYLineAndShapeRenderer) plot.getRenderer();
r.setSeriesShape(0, ShapeUtilities.createDiamond(5));
r.setSeriesShapesVisible(0, true);

image

SSCCE:

import java.awt.Dimension;
import java.util.Random;
import javax.swing.JFrame;
import org.jfree.chart.*;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.util.ShapeUtilities;

/** @see https://stackoverflow.com/a/14822991/230513 */
public class Test {

    private static final int N = 16;
    private static final Random random = new Random();

    private static XYDataset createDataset() {

        final TimeSeries series = new TimeSeries("Data");
        Day current = new Day();
        for (int i = 0; i < N; i++) {
            series.add(current, Math.abs(random.nextGaussian()));
            current = (Day) current.next();
        }
        return new TimeSeriesCollection(series);
    }

    private static JFreeChart createChart(final XYDataset dataset) {
        JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Test", "Day", "Value", dataset, false, false, false);
        XYPlot plot = (XYPlot) chart.getPlot();
        XYLineAndShapeRenderer r = (XYLineAndShapeRenderer) plot.getRenderer();
        r.setSeriesShape(0, ShapeUtilities.createDiamond(5));
        r.setSeriesShapesVisible(0, true);
        return chart;
    }

    public static void main(String[] args) {

        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        XYDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        ChartPanel chartPanel = new ChartPanel(chart) {

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(630, 480);
            }
        };
        f.add(chartPanel);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JFreechart 中获取点的菱形形状 的相关文章

  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 分配给大R数据框[重复]

    这个问题在这里已经有答案了 在 R 中 我通过以下方式创建数据框 data lt data frame dummy rep dummy 10000 data number 0 data another 1 当我运行一个为数据框分配值的 fo
  • 如何在代码中设置colorAccent?

    我想在代码中更改我的应用程序的主题 所以我用谷歌搜索它 不幸的是 我找不到任何方法 在java代码中设置colorAccent 我不想像这样在 xml 中设置这个属性
  • Tkinter 和多线程

    我使用以下代码来检查 Tkinter 是否与多线程一起工作 但是下面的代码不起作用 Gui一运行就没有响应 谁能解释一下为什么它不起作用 from threading import Thread import tkinter as tk w
  • HashMap 应该是未排序的,但仍然根据键排序

    根据这些 http docs oracle com javase 6 docs api java util HashMap html HashMap LinkedHashMap 和 TreeMap 的区别 java初学者 如何在哈希图中对键
  • Pygame 显示无响应

    因此 我尝试为使用精灵进行 X 和 Y 运动的基本 2D Python 游戏创建基础 然而 尽管这里的代码试图screen fill and screen blit playerX 50 playerY 50 player pygame i
  • 帆蓝图生命周期

    我需要向结果添加一些额外的数据find蓝图 我找到了这个解决方案 module exports find function req res return sails hooks blueprints middleware find req
  • 在 Visual Studio 中引用 system.management.automation.dll

    我开始研究 PowerShell 模型和管理单元开发 我注意到的第一件事是引用 System management automation dll 然而 在 Visual Studio 中 NET 选项卡没有该程序集 也无法浏览到 C win
  • 如何刷新Google地图中的坐标?

    我可以在点击刷新按钮时刷新谷歌地图 但它显示的是旧坐标 在某些区域 它显示矩形图像 其中有十字图像 错误在哪里或者我必须对其进行哪些修改 这是我的代码 public class GmapActivity extends MapActivit
  • Julia:为什么共享内存多线程没有给我带来加速?

    我想在 Julia 中使用共享内存多线程 正如 Threads threads 宏所做的那样 我可以使用 ccall jl threading run 来执行此操作 虽然我的代码现在并行运行 但我没有获得预期的加速 以下代码旨在作为我正在采
  • 是否可以保证使用 @PostConstruct 注解的方法先于同一 bean 中使用 @Scheduled 的方法执行?

    假设我正在定义一个缓存 bean 它将在应用程序启动时初始化 并以固定的时间间隔刷新 如下所示 Component public class Cache PostConstruct public void initializeCache S
  • 如何检查没有。使用 MYSQLI_STMT_PREPARE 和 MYSQLI_FETCH_ARRAY 时返回的行数?

    我以为我可以用MYSQLI STMT NUM ROWS and MYSQLI STMT STORE RESULT检查是否有 返回的行数 参见注释行 1 2 3 但在下面的上下文中似乎并非如此 此代码确实有效 没有注释行 但我试图添加额外的检
  • python 按周或月分割 pandas 数据框,并根据这些 sp 对数据进行分组

    DateOccurred CostCentre TimeDifference 03 09 2012 2073 28138 03 09 2012 6078 34844 03 09 2012 8273 31215 03 09 2012 8367
  • Pandas 在读取 CSV 之前忽略前几行

    我正在使用 Pandas 库和 Python 我有一个 Excel 文件 在 Excel 工作表的顶部有一些标题信息 我不需要这些信息来提取数据 但是 标题信息可能需要更长的行 因此无法预测它有多长 所以 我的数据提取应该从 ID 的地方开
  • 从基础模块调用动态特征代码

    我试图实现一个动态功能 从我的基本模块中我应该调用该功能中的一些方法 但它只能从该功能中调用基本方法 有什么方法可以使功能代码从基本模块访问 我了解未安装功能时会发生什么 我已经使用默认的谷歌文档实现了它 所以我没有不同的代码或实现 今天没
  • 在r中使用read_csv导入多个csv文件

    我有一个包含多个 csv 文件名称的向量 library readr data lt c categories csv customers csv employees csv employee territories csv order d
  • InternalsVisibleTo 属性不起作用

    我正在尝试使用InternalsVisibleToassembly 属性 使 NET 类库中的内部类对我的单元测试项目可见 由于某种原因 我不断收到一条错误消息 MyClassName 由于其保护级别而无法访问 两个程序集都已签名 并且我在
  • 将表单结果从联系表单 7 导出到 PDF (fPDF)

    我正在尝试将用户在 WordPress 中的联系表单 7 中输入的值通过 fpdf 导出为 PDF 这就是我所设置的 我可以生成 PDF 但没有从表单动态生成的值 函数 php add action wpcf7 before send ma
  • 角度 $setPristine() 不起作用

    我正在尝试使用 Angular 的内置表单函数 特别是setPristine 清除用户提交时的表单 我的控制器可以访问 scope newForm 我的形式 及其所有方法 但正在运行 scope newForm setPristine 没有
  • Stringify C 预处理器

    这是我的第一篇文章 所以如果我太含糊或提供了每个人都会直观地假设的信息 请告诉我 我对写作很陌生C我只是想更好地了解预处理 我正在编写一个简单的程序 可以使用直接从控制台接收参数gcc Wall std c99 DSEED argument
  • 如何在 JFreechart 中获取点的菱形形状

    我需要在 JFreechart 中的时间序列上获得 A 菱形形状 但我无法做到这一点 有人可以指导应该在下面的代码中添加哪些代码来实现钻石形状点以及如何更改线条的颜色吗 该程序使用 rs 和 stmt 以及其他从数据库派生并在其他地方定义的