5

我正在尝试使用 DefaultCategoryDataset 绘制 LineChart,而我面临的问题是,当我尝试在两个值之间绘制空值时,两点之间的连接丢失(即连接两点的线不会出现),否则我必须跳过空值(通过对 DataSet 中的每个点执行空检查)以连接其他两个点,这会导致 x 轴点未绘制在我的图表上。

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

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

有没有办法做到这一点?

4

1 回答 1

1

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

第一个数据集应包含所有数据,包括null-values。将此数据集配置为仅绘制形状(但不绘制线条)的渲染器。您最终会得到每个不是“空”的数据点的形状。

第二个数据集应该只包含不是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);

hth,
-马丁

于 2014-02-11T14:02:48.170 回答