当前位置: 首页 > 知识库问答 >
问题:

JFreeChart:单轴分布图

吉凯捷
2023-03-14

我使用的是JFreeChart,我希望有一个只有一个维度的图表:一个X轴(表示毫秒)和形状(表示事件)。

我创建了一个XYLineChart和一个带有隐藏y轴的XYPlot:

 this.chart = ChartFactory.createXYLineChart(
     "","","",dataset,PlotOrientation.VERTICAL, false, true,false);

 XYPlot plot = (XYPlot) chart.getPlot();

 plot.setBackgroundPaint( Color.lightGray );
 plot.setDomainGridlinePaint( Color.white );
 plot.setRangeGridlinePaint( Color.white );
 plot.setRangeGridlinesVisible(false);
 plot.setDomainCrosshairVisible( true );
 plot.setRangeCrosshairVisible( false ); 

 NumberAxis range = (NumberAxis) plot.getRangeAxis();
 range.setVisible(false);
 range.setRange(0.0, 1.0);
 range.setTickUnit(new NumberTickUnit(0.5));

在数据集中,我使用了一个固定的y坐标。

显然,如果存在另一种适当的图表类型会更好。

多谢.

共有1个答案

勾安翔
2023-03-14

如果整个图表的宽度/高度低于可配置的阈值,则调整其大小。

我修改了您的示例,添加了ChartPanel的代码,并使用ChartPanel.SetMinimumDrawWidth(int)ChartPanel.SetMinimumDrawWidth(int)两个方法来设置这些阈值。

this.chart = ChartFactory.createXYLineChart(
 "","","",dataset,PlotOrientation.VERTICAL, false, true,false);

XYPlot plot = (XYPlot) chart.getPlot();

plot.setBackgroundPaint( Color.lightGray );
plot.setDomainGridlinePaint( Color.white );
plot.setRangeGridlinePaint( Color.white );
plot.setRangeGridlinesVisible(false);
plot.setDomainCrosshairVisible( true );
plot.setRangeCrosshairVisible( false ); 

NumberAxis range = (NumberAxis) plot.getRangeAxis();
range.setVisible(false);
range.setRange(0.0, 1.0);
range.setTickUnit(new NumberTickUnit(0.5));

ChartPanel chartPanel = new ChartPanel(this.chart);
chart.setMinimumDrawHeight(10);
chart.setMinimumDrawWidth(10);
 类似资料:
  • 我已经创建了一个框架,其中包含两个独立的JFree图表(以2x1的网格布局保存)。上面的图表显示的是一个圆形的图表,下面的是一个时间序列图。我想做的是链接显示的两个图表的X轴,这样当我放大一个图表时,另一个图表就会放大到相应的时间段。 这可能吗?如果是的话,你能给我举个例子吗

  • 问题内容: 我有一个始终从x = 0开始的JFree XY折线图。然后,根据属性文件中用户定义的设置,应用程序将根据该数字(以分钟为单位)递增。 例如,x = 0开始时,用户定义的设置为5,因此刻度变为0、5、10、15、20…,或者用户设置为3,因此变为0、3、6、9、12…非常简单。 我遇到的问题是图表开始的方式。如果我从0开始,则0在图形的中间,而不是在左下角的-0.0000005,-0.0

  • 在JFreechart中,我有一个带有日期(和时间)的X轴。 我怎样才能让JFreechart优化它们并充分利用它们? 现在它包含的标签比空间多,所有标签都转换为“…”。 如果不是所有的刻度都有标签,这是完全可以的,但是我想要尽可能多的(如果它们合适并且可以完全显示)。 我怎样才能做到这一点? 这里是完整的最小源来重现截断的标签。(默认情况下,JFreechart不处理优化: 我更喜欢像@tras

  • 我有数据,例如(13600),(24400)。。。(3315000)其中(13000)- 如果放入图表中,轴将显示“秒”作为数字。我设置了一个代码,以1小时为间隔显示轴标签。 现在轴标签是:0。。。3600 ... 7200 ... 10.800 ... 如何使轴标签以小时显示?(0 ... 1 ... 2 ... 3 ...)

  • 我试图在JFreeChart初始化期间加载数据集。但每次我尝试创建一个“每个系列的项目数”越高的数据集时,图表中显示的数据(所有数据)越多(数据集越大,图表越小)。但实际上,我想要的是在图表上显示固定范围的数据集值,而其余的数据集值仍然隐藏。数据通常以同样的方式显示在实际的交易平台上,比如Metatrader(MT4)。第一次打开图表时,我可以看到屏幕上充满了图表的唯一可见数据集,如果我向左滚动图

  • 我有一个图表,以为域。它看起来很好,但是最后一个轴标签有时会离开图表区域。下面是要重现的示例代码: 以下是当前的截图;问题可以在最后一个标签上看到: 是什么原因导致最后一个标签呈现在当前图表区域之外?还有,我该如何预防呢? 但是,如果我将lot_of_values更改为true(这将向集合中添加更多数据-您可以在源代码中看到),那么域轴的最后一个标签将被剪切。下面是lot_of_values=tr