【问题标题】:Avoid null in dataset for line chart避免折线图数据集中为空
【发布时间】:2013-06-07 15:10:20
【问题描述】:

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

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

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

有什么办法吗?

【问题讨论】:

    标签: jfreechart linechart


    【解决方案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,
    - 马丁

    【讨论】:

    • 如果您想为图表使用图例,这不是一个好的解决方案。然后它将为两行中的每一行显示一个图例项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多