Foxtable(狐表)用户栏目专家坐堂 → 绘图问题请教


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

主题:绘图问题请教

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


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
绘图问题请教  发帖心情 Post By:2016/8/22 11:54:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:产量.png
图片点击可在新窗口打开查看
红袍老师,上图是我要做的一张图,代码如下:

'绘图代码
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("生产井产量表") '定义一个变量t引用数据表
Chart= Forms("生产井产量窗口").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Chart.ChartType = ChartTypeEnum.XYPlot '图表类型该为Bar(条形)
Series.Length = t.Rows.Count '设置图系的长度
Series.Text = "产气量"
For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = t.Rows(i)("DailyGas") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("date")) '指定字符表示
    Series.TooltipText = "X = {#XVAL},Y = {#YVAL}"
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Series = Chart.SeriesList2.Add() '增加一个图系
Chart.ChartType = ChartTypeEnum.XYPlot '图表类型该为Bar(条形)
Series.Length = t.Rows.Count '设置图系的长度
Series.Text = "产水量"
For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = t.Rows(i)("DailyWater") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("date")) '指定字符表示
    Series.TooltipText = "Y = {#YVAL}"
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
'图片美化
Chart.AxisY.Text = "产气量"
Chart.AxisY2.Text = "产水量"
Chart.AxisX.AnnoRotation = - 90 'X轴标示逆时针旋转90度
Chart.AxisX.ClearValueLabel
Chart.AxisX.GridMajorVisible = False '隐藏X轴的网格线
Chart.AxisY.GridMajorVisible = False '隐藏Y轴的网格线
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)

 

有几个问题请教:

1.这种柱状图最多可以支持多少行数据?我的数据点太多了,有的井产量有几年,上千条数据。

2.我的横坐标是用的日期(date),但是不能都显示出来,不然太多了,能够让X轴每隔20条数据显示一个标签吗?

3.如果要把鼠标放在数据点上,显示当前点的时间和产量,也就是X、Y值,Y值是数值,可以用YVAL显示,时间如何显示呢?

4.如果在原来的表中,时间这一列(“date”)比较乱,不是按时间先后排列的,绘图的时候能否让它以时间先后顺序绘图?时间早的点在时间晚的点的左侧。如何实现?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/22 12:29:00 [只看该作者]

1、多少行都行;

 

2、设置刻度间隔 http://www.foxtable.com/webhelp/scr/1018.htm

 

3、不行......

 

4、先对表格进行排序或统计


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


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/22 12:37:00 [只看该作者]

2.设置Major不行,我的X轴是时间,或者转换为字符,不是数字。

能否这么做,增加一列,专门作为X轴的标签,这一列从date这一列中复制数据,当date日期为每月1号的时候,复制一个日期,如果不为每月1号,则为空值?其实这些数据都是每天一个,我只需要一个月有一个显示标签即可。



 

4、先对表格进行排序或统计

 

在加载外部表的时候排序呢?设置排序规则,对成图的数据顺序有影响吗?

[此贴子已经被作者于2016/8/22 13:53:39编辑过]

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


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/22 12:38:00 [只看该作者]

我有2000多项数据,一共180多W条,如果都采用一个个排序好,难度太大。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/22 14:42:00 [只看该作者]

 1、排序直接设置一下就行啊

 

Tables("表A").Sort = "第一列"

 

 2、你可以间隔20设置一次啊

 

If i mod 20 = 0 Then

    Chart.AxisX.SetValueLabel(i, t.Rows(i)("date")) '指定字符表示

Else

    Chart.AxisX.SetValueLabel(i, "") '指定字符表示

End If


 回到顶部