我正在尝试使用 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/