在图表中仅显示大于0的值

时间:2018-08-01 19:43:33

标签: c# winforms

我有一个像这样的人:

        hardSpecChart.DataSource = hardSpecModel;
        hardSpecChart.Series.First().XValueMember = "TasksName";
        hardSpecChart.Series.First().YValueMembers = "Time";

问题是我的Y值与0一起出现的某些问题,所以我不想在图表中显示该项目的标签,所以要解决此问题,我只需这样做

   hardSpecChart.DataSource = hardSpecModel.Where(x => x.Time > 0);

它可以工作,但不像预期的那样,我只希望从图表中消失标签,而不是图表左上方的值:

enter image description here

我想在图表的右上角显示所有标签,但是如果它们的值为0,我不想在图形上显示

enter image description here

1 个答案:

答案 0 :(得分:2)

对于饼图,一些附加规则适用:

  • 只有Y值很重要。 (但是,如果添加X值,您仍然可以在表达式中引用它们,请参见下文。)
  • 您可以有多个系列,但图表中仅显示第一个点。不过,其他系列中的影片确实显示在图例中。
  • 默认情况下,Legend显示每个Y值,而不显示序列名称,
  • 通常,图例会受到属性LegendTextIsVisibleInLegend的影响,这两个属性都可以应用于整个Series或单个DataPoint。
  • 数据点显示为切片,其宽度(角度)与所有绝对值之和成正比。见下图! 这意味着值0的点根本不显示。
  • 但是:如果将IsValueShownAsLabel设置为true零值标签仍将显示为0

要抑制这些行为,您可以

  • 通过遍历点(丑陋的)或。,改变0的点的属性。
  • 设置LabelFormat,以抑制整个系列的0someseries.LabelFormat = "#";

在下面的图表中我已设置

chart1.Series[0].LabelFormat = "#";
chart1.Series[0].LegendText = "#INDEX. = #VAL";

还有许多其他keywords,也可以将它们组合在一起。

enter image description here