You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET Chart中为同系列的每个条形图设置单独颜色

在VB.NET Chart同系列中为每个条形图设置单独随机颜色的实现方案

需求:在VB.NET Chart控件的同系列中,为每个条形图设置单独的随机颜色,实现每个Y值条形图颜色不同的效果。以下是原LoadChart4代码:

Sub LoadChart4()
    With Chart4
        .Series.Clear()
        .Series.Add("Series1")
    End With

    Dim da As New SqlDataAdapter("SELECT gt, COUNT(*) as total FROM tblStatus WHERE month(sdate) = month(getdate()) AND year(sdate) = year(getdate()) group by gt", cn)
    Dim ds As New DataSet
    da.Fill(ds, "Gt")
    Chart4.DataSource = ds.Tables("Gt")
    Dim series1 As Series = Chart4.Series("Series1")
    series1.ChartType = SeriesChartType.StackedBar

    series1.Name = "GT"

    With Chart4
        .Series(series1.Name).XValueMember = "Gt"
        .Series(series1.Name).YValueMembers = "total"
        .ChartAreas(0).AxisX.LabelStyle.Format = "MMMM"
        .Series(0).IsValueShownAsLabel = True
        .ChartAreas(0).AxisX.Title = DateTime.Now.ToString("MMMM)
    End With
End Sub

实现思路与修改代码

核心逻辑是为系列内的每个DataPoint单独设置颜色,具体步骤:

  • 关闭系列自动调色板,避免覆盖自定义颜色
  • 遍历所有数据点,为每个点生成随机RGB颜色并赋值

修改后的完整代码:

Sub LoadChart4()
    With Chart4
        .Series.Clear()
        .Series.Add("Series1")
    End With

    Dim da As New SqlDataAdapter("SELECT gt, COUNT(*) as total FROM tblStatus WHERE month(sdate) = month(getdate()) AND year(sdate) = year(getdate()) group by gt", cn)
    Dim ds As New DataSet
    da.Fill(ds, "Gt")
    Chart4.DataSource = ds.Tables("Gt")
    Dim series1 As Series = Chart4.Series("Series1")
    series1.ChartType = SeriesChartType.StackedBar
    series1.Name = "GT"

    With Chart4
        .Series(series1.Name).XValueMember = "Gt"
        .Series(series1.Name).YValueMembers = "total"
        .ChartAreas(0).AxisX.LabelStyle.Format = "MMMM"
        .Series(0).IsValueShownAsLabel = True
        .ChartAreas(0).AxisX.Title = DateTime.Now.ToString("MMMM") ' 修复原代码引号未闭合问题
    End With

    ' 自定义随机颜色设置
    series1.Palette = ChartColorPalette.None ' 禁用自动调色板
    Dim randomColor As New Random()
    ' 遍历每个数据点,设置随机颜色
    For Each dp As DataPoint In series1.Points
        dp.Color = Color.FromArgb(randomColor.Next(256), randomColor.Next(256), randomColor.Next(256))
    Next
End Sub

关键说明

  • series1.Palette = ChartColorPalette.None:必须禁用自动调色板,否则自定义颜色会被控件默认配色覆盖
  • Color.FromArgb(randomColor.Next(256), ...):通过Random类生成0-255的RGB随机值,生成随机颜色
  • 遍历series1.Points:每个DataPoint对应一个条形图,单独设置Color属性即可实现每个条形颜色独立

内容的提问来源于stack exchange,提问作者ratheesh k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:14:50