ars*_*thp 5 linechart jfreechart
我正在尝试使用DefaultCategoryDataset绘制一个LineChart并且我正面临的问题是,当我尝试在两个值之间绘制空值时,两个点之间的连接丢失(即连接两个点的线不会出现),或者我必须跳过空值(通过对DataSet中的每个点执行空检查)以连接其他两个点,这导致x轴点不会在我的图形上绘制.
例如:如果我在x轴上有Unit1,Unit2,Unit3和一些值,比如每个10,20,30,它可以正常工作并绘制一条斜线.但是在Unit2中没有20,如果我设置为null,我只能在我的图表上绘制两个点而没有连接这两个点的线.
为了绘制线条,我必须从我的x轴跳过Unit2点.但我想要做的是我想将Unit1连接到Unit3而不跳过Unit2(并且它的值保持为null),我不想绘制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);
Run Code Online (Sandbox Code Playgroud)
hth,
-马丁