Foxtable(狐表)用户栏目专家坐堂 → 柱形图的颜色如何更改


  共有22589人关注过本帖树形打印复制链接

主题:柱形图的颜色如何更改

帅哥哟,离线,有人找我吗?
floor2
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
柱形图的颜色如何更改  发帖心情 Post By:2009/8/27 17:12:00 [只看该作者]

 在窗口中添加一个柱形图,根据颜色来统计数量,现在想把统计红色数量的柱,变成红色,绿色数量的柱子颜色变为绿色,该如何设置?谢谢.

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47506 积分:251454 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/27 17:18:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
For n As integer = 0 To 1
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 10 '图系包括10个数据点
    For i As integer = 0 to 9 '指定每个数据点的位置
        Series.X(i) = i '指定水平坐标
        Series.Y(i) = i + n * 2 + Rand.Next(5) '垂直坐标用随机数生成
    Next
Next
Chart.SeriesList(0).FillColor= Color.Red
Chart.SeriesList(1).FillColor= Color.Green

 回到顶部
帅哥哟,离线,有人找我吗?
floor2
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/8/27 17:54:00 [只看该作者]

Series.Length = 8 '新增图系包括10个数据点
For i As integer = 0 to 7 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(1) = Vars("红")
    Chart.AxisX.SetValueLabel(1,"红")
    Series.Y(2) = Vars("黄")
    Chart.AxisX.SetValueLabel(2,"黄")
    Series.Y(3) = Vars("蓝")
    Chart.AxisX.SetValueLabel(3,"蓝")
    Series.Y(4) = Vars("绿")
    Chart.AxisX.SetValueLabel(4,"绿")
    Series.Y(5) = Vars("灰")
    Chart.AxisX.SetValueLabel(5,"灰")
    Series.Y(6) = Vars("白")
    Chart.AxisX.SetValueLabel(6,"白")
    Series.Y(7) = Vars("咖啡")
    Chart.AxisX.SetValueLabel(7,"咖啡")
    Series.Y(0) = Vars("黑")
    Chart.AxisX.SetValueLabel(0,"黑")
next
Chart.SeriesList(0).fillColor= Color.black
Chart.SeriesList(7).fillColor= color.red
Chart.SeriesList(6).fillColor= Color.white
Chart.SeriesList(5).fillColor= Color.Red
Chart.SeriesList(4).fillColor= Color.green
Chart.SeriesList(3).fillColor= Color.blue
Chart.SeriesList(2).fillColor= Color.yellow
Chart.SeriesList(1).fillColor= Color.Red


把chart.serieslist().fillcolor...这些语句放进去就不行
本来是可以的,是哪里出问题了

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47506 积分:251454 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/27 20:05:00 [只看该作者]

Series不是凭空生成的,要用Add方法增加的

For i As integer = 0 to 7 '指定每个数据点的位置
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 8 '新增图系包括10个数据点
    .....
Next
[此贴子已经被作者于2009-8-27 20:05:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
floor2
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/8/27 21:45:00 [只看该作者]

把代码更改了下,麻烦看下这样的代码哪里有问题,老是出错  “未将对象引用设置到对象的实例”
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim tbl As DataTable = DataTables("订单管理") '定义一个变量tbl引用数据表
Dim lst As List(Of String)
lst.add("红")' tbl.GetUniqueValues("", "产品") '获得产品名称集合
lst.add("黑")
lst.add("白")
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = lst.Count '设置图系的长度
For i As integer = 0 to lst.Count - 1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = tbl.Compute("Sum(重量)","[产品] like '"*lst(i)*"' ") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, lst(i)) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47506 积分:251454 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/27 21:52:00 [只看该作者]

同一个图系的颜色是相同的,不能单独指定图系某个点的颜色.
你只有一个图系,自然下面的代码要出错,因为图系1到7是不存在的,只有图系0

解决办法:

除非你增加8个图系,每个图系一个点


 回到顶部
帅哥哟,离线,有人找我吗?
floor2
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/8/27 21:55:00 [只看该作者]

 哦 明白了,我呆会再看下图系的颜色问题,
下午看了帮助,发觉我原来的代码有问题,就参考帮助里的代码,但是老出问题,狐爸帮我看下,是什么问题

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47506 积分:251454 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/27 21:59:00 [只看该作者]

Dim lst As List(Of String)
lst.add("红")
lst.add("黑")
lst.add("白")

应该改为:

Dim lst As New List(Of String)
lst.add("红")
lst.add("黑")
lst.add("白")

其他自己研究
[此贴子已经被作者于2009-8-27 21:59:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
floor2
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/8/27 23:01:00 [只看该作者]

For n As integer = 0 To 7
    Series = Chart.SeriesList.Add()
    Series.Length = 10
    
    For i As integer = 0 to lst.Count - 1
        Series.X(n) = n
        Series.Y(n) = tbl.Compute("Sum(重量)","[颜色] like  '*" &lst(n)& "*'")
     
      
   Next
next
Chart.SeriesList(0).FillColor= Color.Red
Chart.SeriesList(1).FillColor= Color.yellow
....
狐爸 帮我看下该怎么设置好,参数改了很多次,没有眉目啊,帮助里还找不到
 

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47506 积分:251454 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/27 23:05:00 [只看该作者]

别做了,我测试过,不好看.

 回到顶部
总数 22 1 2 3 下一页