我正在尝试使用DefaultCategoryDataset绘制LineChart并且我遇到的问题是, 当我尝试在两个值之间绘制空值时,两个点之间的连接丢失(即连接两个点的线不会出现),否则我必须跳过空值(通过对每个值执行空值检查)指向DataSet)以连接其他两个点,这会导致x轴点不会在我的图形上绘制。
例如: 如果我在x轴上有Unit1,Unit2,Unit3和一些值,比如每个10,20,30,它可以正常工作并绘制图表倾斜的线。但是在Unit2中不是20,如果我设置为null,我只会在我的图表上绘制两个点而没有连接这两个点的线。
为了绘制线条,我必须从x轴跳过Unit2点。 但我想要做的是我想将Unit1连接到Unit3而不跳过Unit2(它的值保持为null),我不想绘制 0 而不是null。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以使用两个几乎相同的数据集,但只能使用两个渲染器。
第一个数据集应包含所有数据,包括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);
HTH,
- 马丁