vb.net - 仅当不等于零时才显示堆积柱形图标签值?

标签 vb.net charts

我有以下代码,原始代码是:here

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim dtTest As DataTable = New DataTable
        dtTest.Columns.Add("col1", GetType(Integer))
        dtTest.Columns.Add("col2", GetType(Integer))
        dtTest.Columns.Add("col3", GetType(String))

        dtTest.Rows.Add(0, 1, "S")
        dtTest.Rows.Add(0, 1, "H")
        dtTest.Rows.Add(80, 1, "C")
        dtTest.Rows.Add(43, 2, "S")
        dtTest.Rows.Add(11, 2, "H")
        dtTest.Rows.Add(55, 2, "C")
        dtTest.Rows.Add(30, 3, "S")
        dtTest.Rows.Add(85, 3, "H")
        dtTest.Rows.Add(53, 3, "C")
        dtTest.Rows.Add(55, 4, "S")
        dtTest.Rows.Add(55, 4, "H")
        dtTest.Rows.Add(11, 4, "C")

        Dim dv As DataView = New DataView(dtTest)
        dv.Sort = "col2 asc"

        Chart1.Series.RemoveAt(0) 'this is just to remove the default Series in a 
        'VB.NET chart; you may not need this

        Chart1.DataBindCrossTable(dv, "col3", "col2", "col1", "Label=col1")

        For Each cs As Series In Chart1.Series
            cs.ChartType = SeriesChartType.StackedColumn
        Next

    End Sub
End Class

代码生成下面的图表..我想知道是否有一种方法可以不在列上显示为零的值,如最左边的列所示或列顶部的总值也很好。我找到了如何在 Excel 中做到这一点,但没有设法实现这个程序。

非常感谢您的帮助

Result

最佳答案

您需要为您的系列设置 Filtering ,我能够通过使用 Filter(CompareMethod,Double,Series) 以及 DataManipulator.FilterSetEmptyPointsDataManipulator.FilterMatchPoints 属性来获得您正在寻找的结果。

修改后的代码

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim dtTest As DataTable = New DataTable
    dtTest.Columns.Add("col1", GetType(Integer))
    dtTest.Columns.Add("col2", GetType(Integer))
    dtTest.Columns.Add("col3", GetType(String))

    dtTest.Rows.Add(0, 1, "S")
    dtTest.Rows.Add(0, 1, "H")
    dtTest.Rows.Add(80, 1, "C")
    dtTest.Rows.Add(43, 2, "S")
    dtTest.Rows.Add(11, 2, "H")
    dtTest.Rows.Add(55, 2, "C")
    dtTest.Rows.Add(30, 3, "S")
    dtTest.Rows.Add(85, 3, "H")
    dtTest.Rows.Add(53, 3, "C")
    dtTest.Rows.Add(55, 4, "S")
    dtTest.Rows.Add(55, 4, "H")
    dtTest.Rows.Add(11, 4, "C")

    Dim dv As DataView = New DataView(dtTest)
    dv.Sort = "col2 asc"

    Chart1.Series.RemoveAt(0) 'this is just to remove the default Series in a 
    'VB.NET chart; you may not need this
    Chart1.DataManipulator.FilterSetEmptyPoints = True 'Points that match filter will be marked as empty
    Chart1.DataManipulator.FilterMatchedPoints = True  'Filter points that match Filter criteria



    Chart1.DataBindCrossTable(dv, "col3", "col2", "col1", "Label=col1")

    For Each cs As Series In Chart1.Series
        Chart1.DataManipulator.Filter(DataVisualization.Charting.CompareMethod.EqualTo, 0, cs)   'Compare if equal to zero
        cs.ChartType = SeriesChartType.StackedColumn
        Dim dpcp As DataPointCustomProperties = New DataPointCustomProperties

    Next

End Sub

结果

enter image description here

关于vb.net - 仅当不等于零时才显示堆积柱形图标签值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617583/

相关文章:

c# - 使用两个具有相同命名空间的 .NET 库

vb.net - 如何从 VB.NET 运行 DOS/CMD/命令提示符命令?

asp.net - VB.NET-ASP.NET-不正确的用户名/密码(验证)

java - NoClassDefFoundError:Vaadin 图表中的 com/google/gson/TypeAdapterFactory

ios - 在 SwiftyCharts 中显示 JSON 多色

java - 使用 Google Chart API 从数据库生成图表

.net - FormatException 未处理 vb.net

database - 维持客户账户余额的最佳方式

javascript - highcharts group series 点击事件获取类别中的所有数据

javascript - Highcharts 区域范围draggableHigh 和draggableLow 不起作用