Java17 JFreeChart TimeSeriesChart 凌晨零点 用日期替代小时时间


在 Java 17 中使用 JFreeChart 创建 `TimeSeriesChart` 时,若要将凌晨零点的小时时间替换为日期,可通过自定义 `DateAxis` 的日期格式实现。以下是示例代码: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Hour; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import java.awt.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TimeSeriesChartExample { public static void main(String[] args) { // 创建时间序列 TimeSeries series = new TimeSeries("Sample Data"); // 添加数据 Calendar calendar = Calendar.getInstance(); for (int i = 0; i < 24; i++) { calendar.set(Calendar.HOUR_OF_DAY, i); Date date = calendar.getTime(); series.add(new Hour(date), Math.random() * 100); } // 创建时间序列数据集 TimeSeriesCollection dataset = new TimeSeriesCollection(series); // 创建时间序列图表 JFreeChart chart = ChartFactory.createTimeSeriesChart( "Time Series Chart", "Time", "Value", dataset, true, true, false ); // 获取图表的绘图区域 XYPlot plot = chart.getXYPlot(); // 获取 X 轴 DateAxis dateAxis = (DateAxis) plot.getDomainAxis(); // 自定义日期格式 dateAxis.setDateFormatOverride(new SimpleDateFormat("HH:mm")); dateAxis.setTickUnit(new org.jfree.chart.axis.DateTickUnit(org.jfree.chart.axis.DateTickUnitType.HOUR, 1)); // 自定义凌晨零点的日期格式 dateAxis.setTickMarkPosition(DateAxis.TickMarkPosition.MIDDLE); dateAxis.setTickLabelGenerator(new org.jfree.chart.axis.DateTickUnitFormat(new org.jfree.chart.axis.DateTickUnit(org.jfree.chart.axis.DateTickUnitType.HOUR, 1), new SimpleDateFormat("HH:mm"), new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyy-MM-dd"))); // 显示图表 ChartFrame frame = new ChartFrame("Time Series Chart", chart); frame.pack(); frame.setVisible(true); } } ``` 代码解释 1. 创建时间序列:使用 `TimeSeries` 类创建一个时间序列,并添加一些随机数据。 2. 创建时间序列数据集:使用 `TimeSeriesCollection` 类将时间序列包装成数据集。 3. 创建时间序列图表:使用 `ChartFactory.createTimeSeriesChart` 方法创建一个时间序列图表。 4. 自定义日期格式:通过 `DateAxis` 的 `setDateFormatOverride` 方法设置默认的日期格式。 5. 自定义凌晨零点的日期格式:使用 `DateTickUnitFormat` 类自定义凌晨零点的日期格式。 额外注意的逻辑点 1. 确保在项目中正确引入 JFreeChart 库,否则代码将无法编译。 2. 日期格式的设置应根据实际需求进行调整,不同的日期格式可能会影响图表的显示效果。 3. 当数据量较大时,可能需要调整 `DateTickUnit` 的间隔,以避免刻度标签过于密集。 [2025-06-23 15:11:43 | AI写代码神器 | 824点数解答]
- Java17 JFreeChart TimeSeriesChart 凌晨零点 用日期替代小时时间(824点数解答 | 2025-06-23 15:11:43)71
- - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内 (571点数解答 | 2025-08-23 20:54:40)89
- - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内,并且可以增加新的一样的文本(1317点数解答 | 2025-08-23 20:58:40)101
- 某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。 输入格式: 输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。 输出格式: 在一行输出该员工的周薪,精确到小数点后2位。(156点数解答 | 2024-10-29 12:00:33)222
- 某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。 输入格式: 输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。 用c语言生产(223点数解答 | 2024-10-30 19:37:26)91
- 某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。 输入格式: 输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。 输出格式: 在一行输出该员工的周薪,精确到小数点后2位。用c语言解决问题(534点数解答 | 2024-11-04 23:43:10)329
- 帮我生成一个日程管理系统包括功能有添加日程事件(事件名称、日期、时间、地点、提醒方式)。 修改或删除日程事件。 查询日程事件(按日期或事件名称)。 显示今日或未来几天的日程安排。 提醒功能(如提前发送通知到邮件)。使用java语言,文件信息保存到本地txt(5818点数解答 | 2024-06-03 20:02:47)302
- JFreeChart 版本是1.5.5, 重新给下答案(538点数解答 | 2025-06-23 15:27:58)62
- java17 一维数据 k-means算法(1377点数解答 | 2025-06-23 09:49:50)73
- java17 word poi-tl table 表头剧中 列1居中 内容居右(689点数解答 | 2025-06-26 11:33:34)132
- excel 8位的文本选择“格式单元格”,在“数字”选项卡下选择“日期” 后显示的都是 ####(327点数解答 | 2023-12-29 09:53:45)245
- 商品信息一般是指产品信息,通过产品信息,消费者能够快速地找到自己所需要的产品,节省时间、促进消费者消费。为了更加直观地了解某网店中所售卖的商品情况,基于该网店的商品销售数据,对商品信息进行调整,即替换非饮料类为零食类、合并大类和二级类目,将结果前5行直接输出到控制台并将控制台输出结果截图粘贴到对应报告中。计算结果包括的字段:商品名称、日期、单价、数量、总价、类别。 大类与二级类目合并规则:合并类=大类-二级类目 本题数据源文件为:商品销售数据.csv(486点数解答 | 2024-08-23 09:14:21)264