jfreechart - 避免折线图的数据集中为空

标签 jfreechart linechart

我正在尝试使用 DefaultCategoryDataset 绘制 LineChart 并且我面临的问题是,
当我尝试在两个值之间绘制一个空值时,两个点之间的连接丢失(即没有出现连接两个点的线),或者我必须跳过空值(通过对每个数据集中的点)以连接其他两个点,这导致 x 轴点未绘制在我的图表上。

例如:如果我在 x 轴上有 Unit1、Unit2、Unit3 和一些值,比如每个值 10、20、30,它工作正常并绘制一条斜线。但是,而不是 Unit2 中的 20,如果我设置为 null,我只会在我的图表上绘制两个点,而没有连接这两个点的线。

为了绘制线条,我必须从我的 x 轴跳过 Unit2 点。
但我想要做的是我想在不跳过 Unit2 的情况下将 Unit1 连接到 Unit3(并且它的值保持为空),我不想绘制 0 而不是空。

有没有办法做到这一点?

最佳答案

您可以使用两个几乎相同的数据集,但使用两个渲染器。

第一个数据集应该包含所有数据,包括 null -值。将此数据集的渲染器配置为仅绘制形状(但不绘制线条)。您最终会为每个非 null 的数据点生成一个形状。

第二个数据集应该只包含不是 null 的数据.为此数据集配置另一个渲染器以仅绘制线条(但不绘制形状)。您将得到一条仅跳过空数据点但连续的行。

代码可能是这样的:

// create your chart here...

// configure first renderer
LineAndShapeRenderer renderer = LineAndShapeRenderer) plot.getRenderer();
renderer.setBaseShapesVisible(true);
renderer.setBaseLinesVisible(false);

// configure second renderer
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer(true, false);
plot.setDataset(1, dataset2);
plot.setRenderer(1, renderer2);

嗯,
- 马丁

关于jfreechart - 避免折线图的数据集中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987389/

相关文章:

JavaFX NumberAxis AutoRange 无限循环

java - 从 MySql 创建时间图表

java - 在 Hadoop 中使用 ExtJS 和 Java

java - 如何在折线图中留出空白区域?

python - matplotlib:如何将多个条与线组合

html - Django 绘制折线图的最佳方式

java - 使用 JFreeChart <java> 将动态折线图添加到现有 JFrame 中的 JPanel

java - JFreeChart:使用 java.time.LocalDate 或 java.time.LocalDateTime 创建图表

java - 将工具提示添加到带有子类别的 jfreechart 堆叠条形图中

java - 使用 jfreechart 创建时间序列