vb 图表控件mschart 的用法小结
vb的chart用法
vb的chart用法一、概述VB是一种常用的编程语言,其内置了图表控件,可以方便地创建各种图表。
Chart控件可用于数据可视化,展示数据之间的关系和趋势。
本篇文档将介绍VB中Chart控件的用法。
二、Chart控件的属性1. Chart对象:Chart控件的根对象,代表整个图表。
2. ChartType:设置图表类型,如柱形图、折线图、饼图等。
3. ChartTitle:设置图表标题。
4. Series1~SeriesN:设置系列数据,用于绘制图表。
5. XAxisTitle、YAxisTitle:设置X轴和Y轴的标题。
6. Legend:设置图例的位置和显示方式。
7. PlotValues:绘制数据点或趋势线。
三、Chart控件的方法1. AddSeries方法:添加系列数据。
2. Series.DataLabels.Show方法:显示数据标签。
3. Series.MarkerStyle属性:设置标记样式。
4. Chart.Export方法:导出图表为图片或PDF文件。
5. Chart.Refresh方法:刷新图表数据。
四、使用Chart控件的步骤1. 添加Chart控件到窗体中。
2. 设置Chart对象的属性,如ChartType、XAxisTitle、YAxisTitle等。
3. 添加系列数据,可以使用DataGridView或数据库等数据源获取数据。
4. 调用AddSeries方法添加系列数据,并设置系列名称和颜色等属性。
5. 绘制数据点或趋势线,可以使用PlotValues属性。
6. 保存或导出图表,可以使用Chart对象的Export方法。
五、示例代码以下是一个简单的VB代码示例,展示如何使用Chart控件绘制柱形图:```vbPrivate Sub Form_Load()' 创建Chart对象Dim chart As New Chart' 设置Chart对象的属性chart.ChartType = xlBarClustered ' 设置图表类型为柱形图chart.Title.Text = "柱形图示例" ' 设置标题' 添加系列数据Dim series As New Series = "销售业绩" ' 设置系列名称series.DataSource = DataGridView1 ' 使用DataGridView 获取数据源chart.SeriesCollection.Add(series) ' 添加系列数据到Chart对象中' 显示图表chart_Paint(chart) ' 在窗体上绘制图表End SubPrivate Sub chart_Paint(ByVal chart As Object)' 绘制图表数据chart.PlotValues = "X,Y" ' 绘制数据点,X为横坐标,Y 为纵坐标值End Sub```以上代码示例展示了如何使用Chart控件创建一个简单的柱形图,并使用DataGridView作为数据源。
VB环境下MSChart控件的应用与研究
某个油田的区块做横坐标,井口数做纵坐
标而形成的“井口数统计图”为例,如图
1所示。
图1 井口数统计图
在此图中,由于区块过多,显示得不清楚,完全分不出哪个区块
对应的数值。解决这样的问
题,操作步骤为:
(1)将区块用编码表
示,如图2所示。
(2)用CommandButton
按钮,显示编码所表示的区
图2 井口数统计数据编码图
If Not IsNull(mRecordset1.Fields(1).Value) Then
js = js + mRecordset1.Fields(1).Value
End If
MRecordset1.Close
mRecordset_main.MoveNext
Wend
End With
(2)区块大于10个时的具体代码:
.RowLabel = ""
Else
.RowLabel = mRecordset_main!qk
'行显示的内容(油田区块)
End If
If Not IsNull(mRecordset1.Fields(0).Value) Then
k = k + mRecordset1.Fields(0).Value
End If
网络纵横
2008年第9期 146
VB环境下MSChart控件的应用与研究
李旭东
(山东胜利职业学院)
摘 要 在Visual Basic 6.0环境下,MSChart控件还有些不能实现的功能,如横坐标的内容显示不清楚,MSChart控件的宽度如何自 动调整以及调整后如何显示看不见的部分。本文主要针对以上问题,就如何改进及应用MSChart控件进行了探讨。
mschart控件使用详解
一.数据源说到绘制图表,可能很多人的第一反应除了是图表呈现的方式外,更关心的便是数据如何添加,记得在很多年前,哪时要绘制一个数据曲线图,一直找不到好的呈现方式,后来使用了SVG的绘图模式,不过在添加数据的时候可谓吃尽了苦头,毕竟,SVG只是一种描述语言,要动态的实现一个图表的绘制,是非常困难的.对于微软的图表控件,数据添加是一件很简单的方式,它支持多种数据添加方式,如:·可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据.·可以在图表的设计界面中,在属性中绑定一个数据源.·可以在后台代码中,动态添加数据.·可以在后台代码中设置一个或多个数据源,直接绑定到图表中.在此处,我只着重讲解一下第3,4两点.对于第3点,相对来说比较简单,在后台代码中,找到要添加代码的Series,通过它下面Points的Add、AddXY、AddY等方法,即可以实现数据的添加.例如:1. double t;2. for(t = 0; t <= (2.5 * Math.PI); t += Math.PI/6)3. {4. double ch1 = Math.Sin(t);5. double ch2 = Math.Sin(t-Math.PI/2);6. Chart1.Series["Channel 1"].Points.AddXY(t, ch1);7. Chart1.Series["Channel 2"].Points.AddXY(t, ch2);8. }复制代码注:代码摘自微软的例子,上例中,Chart1为图表的名字,Channel 1、Channel 2分别表示两个Series数据序列)二.绑定数据先来看看图表控件都支持什么类型的数据绑定,根据官方文档的说法,只要是实现了IEnumerable接口的数据类型,都可以绑定到图表控件中,例如:DataView, DataReader, DataSet, DataRow, DataColumn, Array, List, SqlCommand, OleDbCommand, SqlDataAdapter, 及OleDbDataAdapter对象。
巧用 VB6 之 Data Report 实现图片(Picture)、图表(MsChart)的打印及预览
巧用 VB6 之 Data Report 实现图片(Picture)、图表(MsChart)的打印及预览VB 6.0 专业版和企业版中的数据报表设计器(Data Report Designer) 是用来实现打印数据库数据的有力工具。
在通常状况下, DataReport 的数据源(DataSource)应该是由数据库(DataBase)的基本表(Table)、视图(View)或查询(Query)等生成的,更确切的说该数据源应是一个ADODB.Recordset (二维表),而且ADO 允许生成并打开任意无数据库实体的记录集。
这样就可以为DataReport 随便设置一个数据源,用其实现实现图片打印的预览。
首先,新建"标准Exe"工程,再为工程添加"Data Report" 。
设置"工程属性"的启动对象为"DataReport"。
先使DataReport "显示报表标头/注脚"(右鼠键快捷菜单),再绘制一个RptImage 控件到"报表标头"区域。
然后,就可以编写程序代码了:Private DataReport_Initialize()'创建并打开一个任意的记录集,并将其设置为 DataReport 的数据源Dim adoRecordset As New ADODB.RecordsetadoRecordset.Fields.Append "X", adVariantadoRecordset.OpenSet Me.DataSource = adoRecordsetConst ErrorX = 400 '打印机横向误差Const ErrorY = 400 '打印机纵向误差Me.ReportWidth = Printer.Width - Me.LeftMargin - Me.RightMargin - ErrorXMe.Sections.Item("Section1").Height = 0Me.Sections.Item("Section3").Height = 0Me.Sections.Item("Section2").Controls.Item("Image1").PictureAlign ment = rptPACenterMe.Sections.Item("Section2").Controls.Item("Image1").SizeMode = rptSizeClipMe.Sections.Item("Section2").Controls.Item("Image1").Left = 0Me.Sections.Item("Section2").Controls.Item("Image1").Top = 0Me.Sections.Item("Section2").Height = Printer.Height - Me.TopMargin - Me.BottomMargin - ErrorYMe.Sections.Item("Section2").Controls.Item("Image1").Width= Me.ReportWidthMe.Sections.Item("Section2").Controls.Item("Image1").Height = Me.Sections.Item("Section2").HeightDim x As PictureSelect Case iCase 1 '打印 MsChart。
关于vb中MSCHART控件画二维线图
关于vb中MSCHART控件画二维线图问题如下:使用MSCHART控件做出类似下面这个图形的图来。
经过一些摸索给出如下答案:Private Sub Command1_Click()Dim MyData(0 To 4, 0 To 15) As StringDim iRow As Integer'损失时间H---第1行'次品数PCS---第2行'调机/转型号H---第3行' 报废KG---第4行MyData(1, 0) = "损失时间"MyData(2, 0) = "次品数"MyData(3, 0) = "调机/转型号"MyData(4, 0) = "报废"For i = 1 To 15MyData(0, i) = i & Space(1) '注意一定要后面的space(1),这样做的目的是为了自动显示成标签(字符串类型)Next' 第1行数据初始化(注意,为0的数据不要赋值)iRow = 1MyData(iRow, 1) = 189: MyData(iRow, 2) = 280: MyData(iRow, 3) = 233MyData(iRow, 6) = 338: MyData(iRow, 7) = 356'第2行数据初始化iRow = 2MyData(iRow, 1) = 227: MyData(iRow, 2) = 190: MyData(iRow, 3) = 172MyData(iRow, 6) = 189: MyData(iRow, 7) = 232'第3行数据初始化iRow = 3MyData(iRow, 1) = 72: MyData(iRow, 2) = 145: MyData(iRow, 3) = 120MyData(iRow, 6) = 140: MyData(iRow, 7) = 205'第4行数据初始化iRow = 4MyData(iRow, 1) = 36.01: MyData(iRow, 2) = 37.05: MyData(iRow, 3) = 39.31MyData(iRow, 6) = 32.99: MyData(iRow, 7) = 37.98With MSChart1'------------------图线标记外观设置开始----------------------------------------------------------------For iRow = 1 To 4 '本循环设置4条线标记的大小,线的粗细.Plot.SeriesCollection(iRow).SeriesMarker.Auto = FalseWith MSChart1.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Visible = True: .Pen.Width = 10: .Size = 150End WithNext' 下面的语句单独设置每条线标记的图案类型'第一行标记iRow = 1.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledCircle '圆形'第二行标记iRow = 2.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledSquare '方形'第三行标记iRow = 3.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledUpTriangle '三角形'第四行标记iRow = 4.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleStar '*形'------------------图线标记外观设置结束----------------------------------------------------------------'------------------ 图线外观设置开始----------------------------------------------------------------For iRow = 1 To 4 '本循环设置4条线的粗细及数据值的显示位置.Plot.SeriesCollection(iRow).Pen.Width = 10.Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.LocationType = VtChLabelLocationTypeRight.Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.VtFont.Size = 8'原图中不显示第一条数据线的数值If iRow = 1 Then .Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.LocationType = VtChLabelLocationTypeNoneNext'------------------图线外观设置结束----------------------------------------------------------------'------------------ 坐标轴外观设置开始----------------------------------------------------------------'设置X 轴外观.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleNull'设置第一Y轴外观.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 380.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 19.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0.Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleNull'设置第二Y轴外观.Plot.Axis(VtChAxisIdY2).AxisScale.Hide = True.Plot.Axis(VtChAxisIdY2).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY2).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdY2).AxisGrid.MajorPen.Style = VtPenStyleNull'------------------坐标轴外观设置结束----------------------------------------------------------------'------------------ 图例外观设置开始----------------------------------------------------------------.ShowLegend = True.Legend.Backdrop.Frame.Style = VtFrameStyleSingleLine.Legend.Backdrop.Frame.Width = 10.Legend.Location.LocationType = VtChLocationTypeTopRight'------------------ 图例外观设置结束----------------------------------------------------------------'------------------ 图形区设置开始----------------------------------------------------------------.Plot.AutoLayout = False.Plot.LocationRect.Min.Set 0, 0.Plot.LocationRect.Max.Set .Width, .Height - 850 '减去图例的高度'------------------图形区设置结束----------------------------------------------------------------.Plot.DataSeriesInRow = True '设置图形按行读取数据.chartType = VtChChartType2dLine '设置图表类型.ChartData = MyDataEnd WithEnd SubMSCHART的使用之vb中利用MSCHART控件画二维散点图2008年03月31日星期一 16:12近日在学习傅立叶分解时,写了个小程序来验证自己对傅立叶分解的一些理解,为了更生动直观就需要画一些图形,以前总是用picture控件来实现,后来在网上看到VB中有个MSCHART控件可以来画很多类型的图形,就学习了一下,由于是第一次搞,所以按习惯在网上搜索相关帖子,发现没有一个很完整的关于MSCHART中二维散点图的例子,很是郁闷,经过我自己几天的努力,终于解决了这个问题.现以一个具体的例子来说明,希望我的这个例子能对大家有所帮助.这个例子是一个论坛上一位网友提出来的,但是这个问题一直到现在还没有人回答,我权当在这里回答一下吧.问题如下:根据此我写了下面的代码Private Sub Form_Load()'对于二维散点图来说,第一列代表了X轴坐标,第二列代表了Y轴坐标'因此在定义二维数据时,第二维定义为0到1,第一维代表了第几点数据,可根据数据点数变化'下面以数据点数有21点为列子Dim MyData(20, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 6: MyData(1, 1) = 60MyData(2, 0) = 8: MyData(2, 1) = 60MyData(3, 0) = 11: MyData(3, 1) = 0MyData(4, 0) = 16: MyData(4, 1) = 0MyData(5, 0) = 19: MyData(5, 1) = 60MyData(6, 0) = 25.8: MyData(6, 1) = 60MyData(7, 0) = 28.8: MyData(7, 1) = 0MyData(8, 0) = 31.8: MyData(8, 1) = 60MyData(9, 0) = 40.3: MyData(9, 1) = 60MyData(10, 0) = 43.3: MyData(10, 1) = 0MyData(11, 0) = 93.3: MyData(11, 1) = 0MyData(12, 0) = 96.3: MyData(12, 1) = 60MyData(13, 0) = 99.3: MyData(13, 1) = 0MyData(14, 0) = 105.3: MyData(14, 1) = 0MyData(15, 0) = 135.3: MyData(15, 1) = 0MyData(16, 0) = 144.3: MyData(16, 1) = 180MyData(17, 0) = 148.8: MyData(17, 1) = 270MyData(18, 0) = 405.03: MyData(18, 1) = 270MyData(19, 0) = 409.53: MyData(19, 1) = 180MyData(20, 0) = 564.17: MyData(20, 1) = 180'波形图外观设置With MSChart1.TitleText = "速度 m/min"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted MSChart1.Plot.AutoLayout = FalseMSChart1.Plot.UniformAxis = FalseMSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图MSChart1.ChartData = MyData '数据End WithEnd Sub运行后的效果图如下MSCHART的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大家有帮助。
MSChart的使用
MSChart的使用编写人:少将日期:2011-02-231.下载并注册MSCHRT20.OCX控件 (1)2.添加MSChart控件 (1)3.需要使用的头文件 (2)4.类中定义变量和方法 (3)5.在对话框的OnInitDialog()函数中 (4)6.在对话框的OnSize()函数中 (5)7.完成initmschart() (5)8.完成DrawChart() (7)9.完成OnChartLine()、OnChartCombi()、OnChartPie() (8)1.下载并注册MSCHRT20.OCX控件下载MSChart6.0,并通过regsvr32进行注册2.添加MSChart控件3.需要使用的头文件首先在要使用的类的实现文件中包含如下头文件:#include "VcPlot.h"#include "VcAxis.h"#include "VcValueScale.h"#include "VcSeriesCollection.h"#include "VcSeries.h"#include "VcPen.h"#include "VcCategoryScale.h"#include "VcColor.h"#include "VcDataGrid.h"#include "VcBackdrop.h"#include "VcFill.h"#include "VcBrush.h"#include "VcDataPoints.h"#include "VcDataPoint.h"#include "VcDataPointLabel.h"#include "VcAxisTitle.h"#include "math.h"#include "VcAxisGrid.h"#include "VcAxisScale.h"在要使用的类的头文件中包含:#include "mschart.h"4.类中定义变量和方法class CTestMSChartDlg : public CDialog{// Constructionpublic:CTestMSChartDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(CTestMSChartDlg)enum { IDD = IDD_TESTMSCHART_DIALOG };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CTestMSChartDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected:HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CTestMSChartDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnSize(UINT nType, int cx, int cy);afx_msg void OnBtnline();afx_msg void OnBtncombi();afx_msg void OnBtnpie();//}}AFX_MSGDECLARE_MESSAGE_MAP()private:void DrawChart();void initmschart();void OnChartLine();void OnChartCombi();void OnChartPie();CMSChart m_Chart;};5.在对话框的OnInitDialog()函数中BOOL CTestMSChartDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization here//创建图表CRect rc;GetClientRect(&rc);rc.bottom-=50;m_Chart.Create("mschart", WS_CHILD| WS_VISIBLE, rc, this, 10);initmschart();DrawChart();//折线图OnChartLine();//条状图//OnChartCombi();//饼状图//OnChartPie();return TRUE; // return TRUE unless you set the focus to a control}6.在对话框的OnSize()函数中//控件自适应窗口大小void CTestMSChartDlg::OnSize(UINT nType, int cx, int cy){CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code hereif( m_Chart.GetSafeHwnd() )m_Chart.MoveWindow( 0, 0, cx, cy );}7.完成initmschart()//初始化图表void CTestMSChartDlg::initmschart(){// 设置标题m_Chart.SetTitleText("mschart 示例");// 下面两句改变背景色m_Chart.GetBackdrop().GetFill().SetStyle(1);m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);// 显示图例m_Chart.SetShowLegend(TRUE);m_Chart.SetColumn(1);m_Chart.SetColumnLabel((LPCTSTR)"1号机");m_Chart.SetColumn(2);m_Chart.SetColumnLabel((LPCTSTR)"2号机");m_Chart.SetColumn(3);m_Chart.SetColumnLabel((LPCTSTR)"3号机");// 栈模式//m_Chart.SetStacking(TRUE);//X轴设置m_Chart.SetRowCount(6);char buf[32];for(int row=1;row<=6;++row){m_Chart.SetRow(row);sprintf(buf, "%d号", row);m_Chart.SetRowLabel((LPCTSTR)buf);}V ARIANT varX;// 不自动标注X轴刻度m_Chart.GetPlot().GetAxis(0,varX).GetCategoryScale().SetAuto(FALSE);// 每刻度一个标注m_Chart.GetPlot().GetAxis(0,varX).GetCategoryScale().SetDivisionsPerLabel(1);// 每刻度一个刻度线m_Chart.GetPlot().GetAxis(0,varX).GetCategoryScale().SetDivisionsPerTick(1);// X轴名称m_Chart.GetPlot().GetAxis(0,varX).GetAxisTitle().SetText("日期");// Y轴设置V ARIANT varY;m_Chart.GetPlot().GetAxis(1,varY).GetValueScale().SetAuto(FALSE); // 不自动标注Y 轴刻度m_Chart.GetPlot().GetAxis(1,varY).GetValueScale().SetMaximum(100); // Y轴最大刻度m_Chart.GetPlot().GetAxis(1,varY).GetValueScale().SetMinimum(0); // Y轴最小刻度m_Chart.GetPlot().GetAxis(1,varY).GetValueScale().SetMajorDivision(5); // Y轴刻度5等分m_Chart.GetPlot().GetAxis(1,varY).GetValueScale().SetMinorDivision(1); // 每刻度一个刻度线m_Chart.GetPlot().GetAxis(1,varY).GetAxisTitle().SetText("小时"); // Y轴名称// 3条曲线m_Chart.SetColumnCount(3);// 线色m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().GetVtColor().Set(0, 0, 255);m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().GetVtColor().Set(255, 0, 0);m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().GetVtColor().Set(0, 255, 0);// 线宽(对点线图有效)m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(50);m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWidth(100);m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().SetWidth(2);// 数据点类型显示数据值的模式(对柱柱状图和点线图有效)// 0: 不显示1: 显示在柱状图外// 2: 显示在柱状图内上方3: 显示在柱状图内中间4: 显示在柱状图内下方m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetD ataPointLabel().SetLocationType(1);m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints().GetItem(-1).GetD ataPointLabel().SetLocationType(1);m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints().GetItem(-1).GetD ataPointLabel().SetLocationType(1);//不要与x轴垂直的表格线m_Chart.GetPlot().GetAxis(0,varX).GetAxisGrid().GetMajorPen().SetStyle(0);// no x grids//隐藏第二y轴,即右边的y轴m_Chart.GetPlot().GetAxis(2,varY).GetAxisScale().SetHide(TRUE);}8.完成DrawChart()//设置数据void CTestMSChartDlg::DrawChart(){/*int nRowCount = 6;char buf[32];srand( (unsigned)time( NULL ) );for(int row = 1; row <= nRowCount; ++row){m_Chart.SetRow(row);sprintf(buf, "%d号", row);m_Chart.SetRowLabel((LPCTSTR)buf);m_Chart.GetDataGrid().SetData(row, 1, rand() * 100 / RAND_MAX, 0);m_Chart.GetDataGrid().SetData(row, 2, rand() * 100 / RAND_MAX, 0);m_Chart.GetDataGrid().SetData(row, 3, rand() * 100 / RAND_MAX, 0);}*/for(int row=1;row<=6;++row){m_Chart.GetDataGrid().SetData(row, 1, 11*row, 0);m_Chart.GetDataGrid().SetData(row, 2, 22*row, 0);m_Chart.GetDataGrid().SetData(row, 3, 33*row, 0);}m_Chart.Refresh();m_Chart.EditCopy();}9.完成OnChartLine()、OnChartCombi()、OnChartPie()/*设置图例类型3:曲线型;1:条形;14:饼图,0:三维显示,1:二维显示m_Chart.SetChartType(1|0) //2D柱(条)形,m_Chart.SetChartType(0|0) //3D柱(条)形m_Chart.SetChartType(1|2) //2D线条型m_Chart.SetChartType(0|2) //3D线条型m_Chart.SetChartType(1|4) //2D区域型m_Chart.SetChartType(0|4) //3D区域型m_Chart.SetChartType(1|6) //2D阶梯型m_Chart.SetChartType(0|6) //3D阶梯型m_Chart.SetChartType(1|8) //2D复(混)合型m_Chart.SetChartType(0|8) //3D复(混)合型另外,在2D方式中,还有两类:饼型和XY型m_Chart.SetChartType(14) //2D 饼型m_Chart.SetChartType(16) //2DXY型*/// 折线图void CTestMSChartDlg::OnChartLine(){m_Chart.SetChartType(3); DrawChart();}// 柱状图void CTestMSChartDlg::OnChartCombi() {m_Chart.SetChartType(1); DrawChart();}// 饼状图void CTestMSChartDlg::OnChartPie() {m_Chart.SetChartType(14); DrawChart();}。
MSCHART的使用之vb中利用MSCHART控件画二维散点图
MSCHART的使用之vb中利用MSCHART控件画二维散点图2008年03月31日星期一 16:12近日在学习傅立叶分解时,写了个小程序来验证自己对傅立叶分解的一些理解,为了更生动直观就需要画一些图形,以前总是用picture控件来实现,后来在网上看到VB中有个MSCHART控件可以来画很多类型的图形,就学习了一下,由于是第一次搞,所以按习惯在网上搜索相关帖子,发现没有一个很完整的关于MSCHART中二维散点图的例子,很是郁闷,经过我自己几天的努力,终于解决了这个问题.现以一个具体的例子来说明,希望我的这个例子能对大家有所帮助.这个例子是一个论坛上一位网友提出来的,但是这个问题一直到现在还没有人回答,我权当在这里回答一下吧.问题如下:如何用VB画出我附件中的图,请各位知道的高手指点下,小弟感激不尽!最好能根据我给的数据写出具体的源代码,或者类似的也可以。
再次感谢!上面是这个帖子的原始图形根据此我写了下面的代码Private Sub Form_Load()'对于二维散点图来说,第一列代表了X轴坐标,第二列代表了Y轴坐标'因此在定义二维数据时,第二维定义为0到1,第一维代表了第几点数据,可根据数据点数变化'下面以数据点数有21点为列子Dim MyData(20, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 6: MyData(1, 1) = 60MyData(2, 0) = 8: MyData(2, 1) = 60MyData(3, 0) = 11: MyData(3, 1) = 0MyData(4, 0) = 16: MyData(4, 1) = 0MyData(5, 0) = 19: MyData(5, 1) = 60MyData(6, 0) = 25.8: MyData(6, 1) = 60MyData(7, 0) = 28.8: MyData(7, 1) = 0MyData(8, 0) = 31.8: MyData(8, 1) = 60MyData(9, 0) = 40.3: MyData(9, 1) = 60MyData(10, 0) = 43.3: MyData(10, 1) = 0MyData(11, 0) = 93.3: MyData(11, 1) = 0MyData(12, 0) = 96.3: MyData(12, 1) = 60MyData(13, 0) = 99.3: MyData(13, 1) = 0MyData(14, 0) = 105.3: MyData(14, 1) = 0MyData(15, 0) = 135.3: MyData(15, 1) = 0MyData(16, 0) = 144.3: MyData(16, 1) = 180MyData(17, 0) = 148.8: MyData(17, 1) = 270MyData(18, 0) = 405.03: MyData(18, 1) = 270MyData(19, 0) = 409.53: MyData(19, 1) = 180MyData(20, 0) = 564.17: MyData(20, 1) = 180'波形图外观设置With MSChart1.TitleText = "速度 m/min"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDottedMSChart1.Plot.AutoLayout = FalseMSChart1.Plot.UniformAxis = FalseMSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图MSChart1.ChartData = MyData '数据End WithEnd Sub运行后的效果图如下MSCHART的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大。
MSCHART用法
1、MSChart控件的属性(1)ChartType属性:用于设置或返回图表类型,MSChart控件图表类型与对应ChartType属性值如表8.7所示。
如,ChartType=1则显示二维直方图,ChartType=14则显示饼图。
表8.7 MSChart图表类型(2)行(格)属性①RowCount属性:用于表示图表中总格(行)数。
例如:若MSChart控件显示二维数组Array_2(M,N),则总格(行)数RowCount=M。
如:RowCount=5,表示有5格(行)数据。
若MSChart控件显示一维数组Array_1(N)的元素值,则总行数RowCount=1。
②Row属性:用于表示图表中某格(行)的序号。
若MSChart控件显示二维数组Array_2(M,N),则图表中第I格的序号Row=I,当Row=1表示第1格(行)数据。
③RowLabel属性:用于表示格(行)标签名,默认值为Ri。
用户可以修改其值,如改为无锡地区人数、南京地区人数等。
④RowLabelCount属性:用于表示格(行)标签数,MSChart控件允许设置多个格(行)标签。
通常取值为1,当需要用2行以上的标签时,才修改此属性。
⑤RowLabelIndex属性:用于表示格(行)标签序号,用户通过设置不同格(行)标签序号选择不同格(行)标签进行编辑。
(3)列属性①ColumnCount属性:用于表示图表中每格(行)中的列数,即数组中列数N。
如设置ColumnCount=3,则每格(行)中有3列,图表每数据格用3个矩形或3个扇形表示。
②Column属性:用于表示图表中某格(行)某列的列序号,例如:Row=1,Column=1,表示图表中第1格(行)第1列。
③ColumnLabel属性:用于表示图表列标签名,默认为Ci。
④ColumnLabelCount属性:用于表示图表某格中的列标签数。
⑤ColumnLabelIndex属性:用于表示图表某格中的列标签序号。
mschart利用技能总结
MSChart使用技巧总结上一篇文章写了用dotnetCHARTING 制作柱形图,折线图和圆饼图园友一直在推荐用微软的MSChart..于是,这几天工作之余研究了一下,其中也发现了不少问题.首先固然需要下载MSChart 下载地址而且微软官方有个很不错的实例代码可以帮助学习使用MSChart 下载地址,当然不用我说.大家也知道的.需要NET Framework 以及配合VS2008 sp1来使用了,至于vs2010好像还没有发现MSChart ,希望有知道的朋友给点帮助.安装完MSChart后在vs2021报表一栏里会出现MSChart控件..二话不说拖到页面.自动生成如下代码:代码<asp:Chart ID="Chart1"runat="server"><Series><asp:Series Name="Series1"></asp:Series></Series><ChartAreas><asp:ChartArea Name="ChartArea1"></asp:ChartArea></ChartAreas></asp:Chart>复制代码相信在你们看过微软的实例后对这些属性会有一些了解滴..然后进入正题,本文也主要介绍MSChart的折线图,圆饼图,和柱状图, 因为这三种本人感觉是最常常利用的.对于这三种用MSChart来实现的话本人感觉比较困难的就是数据绑定带来的麻烦,因为在咱们平时利用的时候大体都是动态的数据,而微软实例大体都是写死在页面上的数据, 而且网上这方面资料也比较少,只能自己动手实践啦.先介绍几种MSChart的数据绑定方式,第一种,也是最通俗的一种= ();["ChartArea1"].XValueMember = "home";["ChartArea1"].YValueMembers = "num1";复制代码第二种往后都是通过List的集合形式绑定数据,这里就用变量list来代替了.一些变量都是对应实体类的名称固然也对应数据库字段(list, "home");"home"是x轴坐标第三种,home 分组,Time X轴坐标,num1 y轴坐标(list, "home", "Time", "num1", "Label=num1,ToolTip=num1");第三种,折线图绑定方式[0].(list, "home", "num1", "Label=num1,ToolTip=num1");第四种,折线图绑定方式代码(list, "home", "Time", "num1", "Label=num1,ToolTip=num1");list, "home", list, "num1");我所了解的就这么几种了,有朋友知道有更好的绑定方式不妨贴上代码来.下面介绍下MSChart下的柱形图常常利用的属性这篇博客都有介绍,在这里我就不罗嗦了..代码= true;hartType = ;sValueShownAsLabel = true;= 1;= false;= false;= 40;= 20;foreach (Series ser in{以在挪用这些属性时先用上文介绍的几种绑定方式绑定数据.有些属性可能在3D模式下失效或在2D模式下失效,这是正常现象,效果图:折线图:属性同上..有些属性会在折线图下失效,效果图:圆饼图:代码IList<ChartModel> list = ();abel = "#PERCENT{P}";["Series1"].(list, "home", "num1", "LegendText=home,YValues=num1,ToolTip=num1"); ["Series1"].ChartType =["Series1"].ToolTip = "#LEGENDTEXT: #VAL{C} million";["ChartArea1"]. = true;复制代码这个比较简单吧..主如果这里的["Series1"].(list, "home", "num1","LegendText=home,YValues=num1,ToolTip=num1");LegendText整了我半天.这个是显示右边说明的,开始老是显示不出来,而且还不统一.Legend其实就是右边显示的说明,可是做过的朋友会发此刻柱形图还有折线图若是页面指定了一个<Lengend></Lengend>标签的话,会多显示一个,所以需要在执行绑定的时候写上这么一段代码可不止可以制作这三种图形,我只是感觉这三种比较常常利用.想在圆饼图中归并几项成显示成其他,弄了半天没弄出来,愁闷,谁知道告知下。
VB调用数据库数据画mschart折线图
Private Sub Command1_Click()On Error Resume NextDim i As IntegerDim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetSet conn = New ADODB.ConnectionSet rs = New ADODB.Recordsetconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\lwl.mdb"conn.Openrs.Open "select * from lwl", conn, adOpenKeyset, adLockOptimistic' Set MSChart1.DataSource = rsWith MSChart1'// 以线条方式显示.chartType = 3'// 把刻录改为手工方式.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0'// 设置每格为 1.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 1'// 设置收入和兼职收入总列数.ColumnCount = 2'//轴坐标标题.Plot.Axis(VtChAxisIdX, 0).AxisTitle = "日期".Plot.Axis(VtChAxisIdY, 0).AxisTitle = "收入"'//轴坐标标题字体大小的设置.Plot.Axis(VtChAxisIdX, 0).AxisTitle.VtFont.Size = 15 .Plot.Axis(VtChAxisIdY, 0).AxisTitle.VtFont.Size = 25'//设置图表标题.Title.Text = "日期和收入对应折线图"'// 显示图例说明.ShowLegend = True'// 标记每个点的值For i = 1 To .Plot.SeriesCollection.Count.Plot.SeriesCollection(i).DataPoints(-1).DataPointLa bel.LocationType = VtChLabelLocationTypeAbovePointNextIf rs.RecordCount > 0 Thenrs.MoveFirstElseExit SubEnd IfFor i = 0 To rs.RecordCount - 1.Column = 1 '收入曲线所在列.RowCount = rs.RecordCount.Row = i + 1.RowLabel = CStr(rs("日期")).Data = rs("收入").ColumnLabel = "收入" '图例说明文字'//兼职收入显示.Column = 2 '兼职收入曲线所在列.Data = rs("兼职收入").ColumnLabel = "兼职收入" '图例说明文字rs.MoveNextNextEnd WithEnd SubPrivate Sub Command2_Click() '下列示例设置图表查看距离和轴分段间距。
在vb中使用mschart来绘制excel图表
在Visual Basic中使用MSChart控件绘制Excel图表*依皮提哈尔·穆罕买提1,那斯尔江·吐尔逊1,热依曼·吐尔逊2(1.新疆大学数学与系统科学学院,新疆,乌鲁木齐,830046;2. 新疆大学信息工程学院,新疆,乌鲁木齐,830046)摘要:本文首先介绍如何使用Visual Basic中的MSChart控件,然后通过实例深入探讨利用MSChart控件绘制Excel数据源图表的方法。
关键词:Visual Basic;MSChart控件;Microsoft Excel数据表;图表中图分类号:文献标识码:AUsing MSChart Control Drawing Excel Chart in Visual Basic Iptihar.Muhammat1,Nasirjan.Tursun1,Reyima.Tursun(1.Mathematics and System Science Institute of Xinjiang University, Urumqi, Xinjiang, 830046)(2. Information Engineering Institute of Xinjiang University, Urumqi, Xinjiang, 830046)Abstract :This article discusses how to use the MSChart control and how that is used in the VB project to drawing Microsoft® Excel charts.Key words: MSChart Control;Chartdata ;Mirosoft Excel Sheets;Chart;Database1. 引言Visual Basic中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,用它来可以显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。
MSChart控件教程
MSChart控件教程MSChart控件这些内容是在学习过程中进行的整理,由于感到书籍资料或软件帮助中有时让人很不容易理解,特制作这个教程,以方便其他朋友学习,从新学习此控件的人的角度来描述相应的属性,相信也能让跟我一样程度的人更容易理解,可能在学习的过程中对某些属性与方法有理解不正确,请各位指正。
附录:1、AllowDynamicRotation作用:返回或设置是否可旋转图表注:需要图表的ChartType是3d类型才可以,当AllowDynamicRotation=True时,在图表中可按住ctrl+鼠标左键旋转图表。
示例:下列代码在窗体加载时将MSChart1设置为3d柱形图,并允许按住ctrl+鼠标左键旋转。
(窗体上放一个MSChart控件)Private Sub Form_Load()With MSChart1.chartType = VtChChartType3dBar '类型为3d柱形图,类形常数详见附录.AllowDynamicRotation = True '允许旋转End WithEnd Sub下列代码将以对话框的形式返回上面示例的AllowDynamicRotation值:MsgBox MSChart1.AllowDynamicRotation2、ChartData注:书中及软件帮助文档中说到数组需要变体型数值,是指如果要将数组第一个元素作为标题,其他作为数据,那个这个数组既有字符又有数字,那么就需要一个变体形。
如果数组中并不包含标题(或是之后使用属性来赋于标题),那么数组是可以定义类形的,个人建议先给定数组类型,之后再使用属性来设置标题。
作用:设置:将一个数组的数据作表图表的显示数据返回:将图表数据赋给一个数组示例:将数组元素作为图表的显示数据制作一个1行6列的的图表(数组的维代表图表的行,每维的元素代表列)Private Sub Form_Load()Dim 一维数组(1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法一维数组(1) = 1一维数组(2) = 2一维数组(3) = 3一维数组(4) = 4一维数组(5) = 5一维数组(6) = 6With MSChart1.chartType = VtChChartType2dBar '类型为3d柱形图.ChartData = 一维数组()End WithEnd Sub为了理解图表的行列与数组的维数的对应关系,再举例一个二维数组(图表对应就形成2行6列)Private Sub Form_Load() Dim 二维数组(1 To 2, 1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法二维数组(1, 1) = 1二维数组(1, 2) = 2二维数组(1, 3) = 3二维数组(1, 4) = 4二维数组(1, 5) = 5二维数组(1, 6) = 6二维数组(2, 1) = 1二维数组(2, 2) = 2二维数组(2, 3) = 3二维数组(2, 4) = 4二维数组(2, 5) = 5二维数组(2, 6) = 6With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 二维数组()End WithEnd Sub下面是将数组的第一个元素设置成字符,使图表加载时将其作为标题的示例:Private Sub Form_Load()Dim 二维数组(1 To 2, 1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法二维数组(1, 1) = "第一行标题"二维数组(1, 2) = 2二维数组(1, 3) = 3二维数组(1, 4) = 4二维数组(1, 5) = 5二维数组(1, 6) = 6二维数组(2, 1) = "第二行标题"二维数组(2, 2) = 5二维数组(2, 3) = 4二维数组(2, 4) = 3二维数组(2, 5) = 2二维数组(2, 6) = 1With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 二维数组()End WithEnd Sub最后总结数组元素与维和图表行列的对应关系,作以下关系图:上述例子是将数组的内容反应到图表中,下面我们将使用上面的一维和二维图表,从图表中获得数据给数组,并将数组显示出来以验证结果(我们采取设置一个断点,然后通过视图\本地的方式来查看生成的数组):从图中可以看到,对于我们用2给数组生成的图表,再赋给新的数组时,数组变成了3维,并且每维还多了一个元素用来存储行标签,既“R1”、“R2”,多出来的一维用来存储列标签,既“C1”、“C2”等。
如何使用MsChart?
如何使用MsChart?MsChart是微软出品的一款功能强大的制作图表工具,用它可以很方便的建立各种图表。
下面我们举例来说明:submitinfo.asp' 发送数据程<HTML><HEAD><META NAME="GENERA TOR" Content="Microsoft Visual Studio 6.0"></HEAD><BODY><form method=post name="form1" action=mschart.asp><INPUT type="submit" value="发送" id=submit1 name=submit1><input type="hidden" value="宋英特的童年记录" name=chtitle><input type="hidden" value=3 name=rcount>' rcount 列数<input type="hidden" value=2 name=ccount>' ccount 行数<input type="hidden" value=1 name=rc_type><input type="hidden" value="1998" name=rname>' rname 列名数组<input type="hidden" value="1999" name=rname><input type="hidden" value="2000" name=rname><input type="hidden" value="身高" name=cname>' cname 行名数组<input type="hidden" value="体重" name=cname><input type="hidden" value=72 name=rc_data>' rc_data 数据<input type="hidden" value=75 name=rc_data><input type="hidden" value=78 name=rc_data><input type="hidden" value=81 name=rc_data><input type="hidden" value=84 name=rc_data><input type="hidden" value=89 name=rc_data></form></BODY></HTML>mschart.asp' 显示数据程序<%@ Language=VBScript %><HTML><HEAD><META NAME="GENERA TOR" Content="Microsoft Visual Studio 6.0"> <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript><!--function window_onload() {t=0;mschart1.TitleText = document.form1.chtitle.value;mschart1.ShowLegend =true;mschart1.ColumnCount =ount.value;mschart1.RowCount =document.form1.rcount.value;for (i=0;i<document.form1.rcount.value;i++){for (j=0;j<ount.value;j++){ mschart1.Row=i+1;mschart1.Column=j+1;if (ount.value>1)mschart1.ColumnLabel =ame(j).value;elsemschart1.ColumnLabel =ame.value;if ((document.form1.rcount.value*ount.value)>1) mschart1.Data=document.form1.rc_data(t).value;elsemschart1.Data=document.form1.rc_data.value;t++;}if (document.form1.rcount.value>1)mschart1.RowLabel =document.form1.rname(i).value ;elsemschart1.RowLabel =document.form1.rname.value ;}}function select1_onchange() {mschart1.chartType =select1.valuemschart1.Plot}//--></SCRIPT><TITLE>精彩春风之图表显示</TITLE></HEAD><BODY LANGUAGE=javascript onload="return window_onload()"><---此处插入mschart activex控件---><BR>MsChart显示方式<SELECT id=select1 name=select1 LANGUAGE=javascript onchange="return select1_onchange()"><OPTION value=1>二维直方图</OPTION><OPTION value=0>三维直方图</OPTION><OPTION value=3>二维折线图</OPTION><OPTION value=2>三维折线图</OPTION><OPTION value=5>二维面积图</OPTION><OPTION value=4>三维面积图</OPTION><OPTION value=14>饼图</OPTION></SELECT><form name=form1 id=form1><% for i=1 to Request.Form("rcount")%><input type="hidden" name=rname id=rname value=<%=Request.Form("rname")(i)%>> <%next%><% for i=1 to Request.Form("ccount")%><input type="hidden" name=cname id=cname value=<%=Request.Form("cname")(i)%>> <%next%><input type="hidden" name=rcount id=rcount value=<%=Request.Form("rcount")%>><input type="hidden" name=chtitle id=chtitle value=<%=Request.Form("chtitle")%>>' chtitle 标题<input type="hidden" name=ccount id=ccount value=<%=Request.Form("ccount")%>> <%if Request.Form("rc_type")=1 then%>' rc_type 排列方式(1 以行方式,2以列方式)<%for i=1 to Request.Form("rcount")*Request.Form("ccount")%><input type="hidden" name=rc_data id=rc_data value=<%=Request.Form("rc_data")(i)%>> <%next%><%else%><%for j=1 to Request.Form("rcount")%><%for i=1 to Request.Form("ccount")%><input type="hidden" name=rc_data id=rc_data value=<%=Request.Form("rc_data")((i-1)*Request.Form("rcount")+j)%>> <%next%> <%next%> <%end if%> </form></BODY> </HTML>。
VS2013 使用MsChart图表控件
VS2013 使用MsChart图表控件显示曲线波形图和数据波峰波谷标记MSChart.exe安装MSCHART注册.exeMSCHRT20.OCX也可以手动注册32位系统下:1. 将mschrt20.ocx放在windows/system32目录下。
(注意,这个文件名中的没有字母a,即没有写chart中的字母a)2.使用命令regsvr32 MSCHRT20.OCX来注册。
64位系统下:1. 确保win7管理员权限2. 把OCX控件,放到C:\Windows\SysWow64路径下面3. 进入cmd,管理员权限运行4. regsvr32 C:\Windows\SysWow64\MSCHRT20.OCX注册成功会提示的。
在VS2013的对话框中的应用如下:打开VS2013,新建一个MFC工程,点击VS中的“工具->选择工具箱->COM组件”,找到Microsoft Chart Control,version 6.0(OLEDB)并勾选上。
接下来,就可以在工具箱中看到该控件首先建立一个基于对话框的工程文件,在对话框界面单击右键->插入Activex控件->Microsoft Chart Control,version 6.0(OLEDB)即可。
新建MFC工程建立对话框应该程序点击完成,右击插入ActiveX控件列表中找到Microsoft Chart Control 6.0(SP4) (OLEDB)控件点确定按钮插入MsChart图表控件在控件上右击添加变量这时候并不能使用MsChart控件的所有功能,还需要添加控件的所有类,添加步骤如下,先打开类向导点“…”找到MSCHRT20.OCX文件注意OCX控件32位系统在C:\ windows/system32目录下64位系统在C:\Windows\SysWow64路径下面注意左侧会列出控件的所有类,可选择添加点击“>”逐个添加要用到的类,好像只能一个一个添加,最好全部添加添加完成按确定会自动加载.h和.cpp文件到工程中,这时才可以使用控件的所有功能下面是整理出来的一些主要功能void CMyPD3000Dlg::Init_Mschart(CMschart1& m_chartt1){m_chartt1.put_AllowSelections(FALSE); //是否可以选择图表对象m_chartt1.put_AllowSeriesSelection(FALSE);//单击单个的图表数据点时是否可选定整个系列。
vb的chart用法 -回复
vb的chart用法-回复VB的Chart用法VB(Visual Basic)是一种广泛应用于开发Windows应用程序的编程语言。
在VB中,Chart(图表)是一种强大的工具,它可以将数据以可视化的方式展示,帮助用户更好地理解和分析数据。
本文将一步一步回答关于VB的Chart用法的问题,并介绍如何创建、自定义和操作图表。
一. 创建图表1. 准备数据在创建图表之前,首先需要准备好要展示的数据。
数据可以来自于多种来源,如数据库、Excel表格或用户输入。
假设我们要展示某个城市每个月的销售额数据。
2. 添加Chart控件在VB的表单设计器中,可以找到Chart控件。
在工具箱中选择Chart控件,然后在表单上拖动鼠标以创建一个Chart控件的实例。
3. 设置Chart类型在Chart 控件的属性窗口中,可以设置Chart 类型。
常见的Chart 类型包括柱状图、折线图、饼图等。
根据数据的性质和需求,选择适合的Chart 类型。
4. 绑定数据将数据绑定到Chart 控件上,可以通过设置Chart 控件的DataSource 属性和DataMember 属性来实现。
DataSource 属性指向数据源,DataMember 属性指定要使用的数据表或数据集。
5. 添加数据系列在Chart 控件的Series 集合中,可以添加一个或多个数据系列。
数据系列代表图表中的一组数据,可以有不同的颜色和样式。
每个数据系列都关联到数据源的一列。
6. 设置图表区域可以设置图表的标题、轴标签、图例等,来更好地展示数据。
Chart 控件的Title 属性、ChartAreas 集合中的Axis 属性和Legend 属性都可以用来设置图表区域的样式和内容。
二. 自定义图表1. 修改图表类型在Chart 控件的属性窗口中,可以随时修改图表的类型。
例如,从柱状图切换到折线图,只需更改Chart 控件的Series 集合中的ChartType属性即可。
VB调用数据库数据画mschart折线图
Private Sub Command1_Click()On Error Resume NextDim i As IntegerDim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetSet conn = New ADODB.ConnectionSet rs = New ADODB.Recordsetconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\lwl.mdb"conn.Openrs.Open "select * from lwl", conn, adOpenKeyset, adLockOptimistic' Set MSChart1.DataSource = rsWith MSChart1'// 以线条方式显示.chartType = 3'// 把刻录改为手工方式.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0'// 设置每格为1 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 1'// 设置收入和兼职收入总列数.ColumnCount = 2'// 轴坐标标题.Plot.Axis(VtChAxisIdX, 0).AxisTitle = " 日期".Plot.Axis(VtChAxisIdY, 0).AxisTitle = " 收入"'// 轴坐标标题字体大小的设置.Plot.Axis(VtChAxisIdX, 0).AxisTitle.VtFont.Size = 15.Plot.Axis(VtChAxisIdY, 0).AxisTitle.VtFont.Size = 25'// 设置图表标题.Title.Text = " 日期和收入对应折线图'// 显示图例说明.ColumnLabel = "收入 " 图例说明文字.ShowLegend = True'// 标记每个点的值For i = 1 To .Plot.SeriesCollection.Count.Plot.SeriesCollection(i).DataPoints(-1).DataPointLabel.LocationType = VtChLabelLocationTypeAbovePointNextIf rs.RecordCount > 0 Thenrs.MoveFirstElseExit SubEnd IfFor i = 0 To rs.RecordCount - 1.Column = 1.RowCount = rs.RecordCount.Row = i + 1.RowLabel = CStr(rs(" 日期 ")).Data = rs(" 收入 ").Column = 2' 兼职收入曲 线所在列收入曲线所在列'// 兼职收入显示.Data = rs(" 兼职收入").ColumnLabel = " 兼职收入" ' 图例说明文字rs.MoveNextNextEnd WithEnd SubPrivate Sub Command2_Click() ' 下列示例设置图表查看距离和轴分段间距。
MSChart图表控件的一些使用
MSChart图表控件的一些使用最近使用MSChart做了几张图表,微软提供的例子中对这个图表控件的使用已经说的比较详细了,我这里记录一些需要注意的。
1. Chart图表的元素要使用该图表首先要了解该图表的元素组成,就是下面这张图了,图表主要包含:Annotations (图形注解集合)ChartAreas(图表区域集合)Legends(图例集合)Series图表序列集合即图表数据对象集合)Title(图标的标题集合)其他大家可以参考Samples中的Char Features一节。
2. 如何在 MVC中使用Chart控件2.1.需要在"<system.web><pages><controls>"中添加如下:<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization,Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>2.2.在"<httpHandlers>"中添加如下部分:<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHan dler,System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>2.3. 有了上面的配置就可以测试了:2.3.1.View中添加:<asp:chart id="Chart1" runat="server" Height="296px"Width="412px" Palette="BrightPastel" imagetype="Png"BorderDashStyle="Solid" BackSecondaryColor="White" BackGradientStyle="TopBottom" BorderWidth="2" backcolor="#D3DFF0"BorderColor="26, 59, 105"><Titles><asp:Title Text="With datasource in code behind" /></Titles><legends><asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold"></asp:Legend></legends><borderskin skinstyle="Emboss"></borderskin><series><asp:Series Name="Column" BorderColor="180, 26, 59, 105"> </asp:Series></series><chartareas><asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White"BackColor="64, 165, 191, 228" ShadowColor="Transparent" BackGradientStyle="TopBottom"><area3dstyle Rotation="10" perspective="10" Inclination="15" IsRightAngleAxes="False" wallwidth="0"IsClustered="False"></area3dstyle><axisy linecolor="64, 64, 64, 64"><labelstyle font="Trebuchet MS, 8.25pt, style=Bold" /><majorgrid linecolor="64, 64, 64, 64" /></axisy><axisx linecolor="64, 64, 64, 64"><labelstyle font="Trebuchet MS, 8.25pt, style=Bold" /><majorgrid linecolor="64, 64, 64, 64" /></axisx></asp:ChartArea></chartareas></asp:chart>2.3.2.index.aspx.cs中添加protected void Page_Load(object sender, System.EventArgs e) {foreach (int value in (List<int>)this.ViewData["Chart"]){this.Chart1.Series["Column"].Points.Add(value);}}2.3.3.Controller中:public ActionResult Index(){ViewData["Title"] = "Home Page";ViewData["Message"] = "Welcome to MVC!";List<int> chartList = new List<int>();chartList.Add(1);chartList.Add(2);chartList.Add(6);chartList.Add(5);chartList.Add(4);ViewData["Chart"] = chartList;return View();}2.3.4.添加System.Web.ui.DataVisualization引用3. Tooltip的使用ToolTip用于在各个关键点,如:标签、图形关键点、标题等当鼠标移动上去的时候,提示用户一些相关的详细或说明信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VtChChartType3dCombination 8 3维联合图
VtChChartType2dCombination 9 2维联合图
VtChChartType2dPie 14 2维饼形图
VtChChartType2dXY 16 2维坐标图
4 图表控件的数据
只有图表控件取得数据才有可能显示数据。图表控件的数据是存放在内置的数据网格内。图表控件数据网格取得数据的方法有:
1.使用Data属性
图表数据可以保存在图表控件的Data属性中。Data属性只能存储数字型的数据,而不能保存文本。在对Data属性赋值前,必须先设置RowCount属性和ColumnCount属性来提供数据的行数和列数,系统根据行数和列数安排Data的大小。
1 图表控件的加载
图表控件不属于标准控件,使用时需要加到工具箱。加入图表控件的方法是:在集成开发环境中,单击“工程”的“部件”,选择列表中的Microsoft Chart Control 6.0(OLEDB)即可。
加入到工具箱之后,加载图表控件到窗体就和加载标准控件的方法一样。
2 图表控件的属性
vntX(2,4) = 300 3级品数量
vntX(3,1) = “2000年” 行标放在第1列
vntX(3,2) = 300 1级品数量
vntX(3,3) = 200 2级品数量
vntX(3,4) = 100
11.ShowLagend属性
设置为True时可以显示图例。
3 图表控件的类型
图表控件可以绘制12种统计图形,设定图表控件的ChartType属性可以决定图表类型。见表4-1。
表4-1 图表控件的ChartType属性
常量 值 图表类型
VtChChartType3dBar 0 3维条形图
在向Data属性赋值时,还需要指明当前行和当前列。例如,
MSChart1.Row = 3
MSChart1.Column = 5
MSChart1.Data = XYZ
是将XYZ赋予Data的第3行第5列。
如果数据是连续存放的,并将AutoIncrement属性设为True,可以不用随时设置当前行和当前列。例如,
本章所开发的绘制图表应用程序使用SetData方法向图表对象添加数据。
4.图题、行标和列标
对图题、行标示和列标示的赋值分两种情况:
(1)使用Data属性和SetData方法
?图题的赋值使用TitleText属性。
?行标示或列标示的赋值先设置当前行或当前列,然后使用RowLabel属性或ColumnLabel属性。例如,
VtChChartType2dBar 1 2维条形图
VtChChartType3dLine 2 3维折线图
VtChChartType2dLine 3 2维折线图
VtChChartType3dArea 4 3维域型图
VtChChartType2dArea 5 2维域型图
VtChChartType3dStep 6 3维阶梯图
MSChart1.Data = X(1)
MSChart1.Data = X(2)
MSChart1.Data = X(3)
2.使用ChartData属性
ChartData属性既可以存放数字型数据,也可以存放文本型数据。例如,
Dim vntX(1 To 4) As Variant
vntX(1) = “产量”
vntX(1,1) = “产品质量逐年变化表” 图题放在vnt(1,1)
vntX(1,2) = ”1级” 列标放在第1行
vntX(1,3) = ”2级”
vntX(1,4) = ”3级”
vntX(2,1) = “1999年” 行标放在第1列 vntX来自2,2) = 100 1级品数量
vntX(2,3) = 200 2级品数量
设置列标的个数。
7.ColumnLabel属性
设置列标。
8.Row属性
设置当前行。
9.Column属性
设置当前列。
10.AutoIncrement属性
如果数据是连续存放的,将AutoIncrement属性设为True,可以不用随时设置当前行和当前列,向图表控件提供数据时可以连续进行。
MSChart1.Row = 1
MSChart1.RowLabel = “A”
(2)使用ChartData属性
假定用图表控件表示一个2维数据,作图时使用MSChart1.ChartData = vntX。现在我们看一看vntX是如何形成的。
Dim vntX(1 To 3, 1 To 4) As Variant
vntX(2) = 200
vntX(3) = 300
vntX(4) = 400
MSChart1.ChartData = X
“产量”将标示在所绘制图形的X轴上。
3.使用SetData方法
格式是:
MSChart1.DataGrid.SetData 行,列,数值,nullFlag
“数值”为双精度。nullFlag指明数据点是否为空。
在属性窗口,也可以用代码,设置图表控件的属性。
1.RowCount属性
设置作图数据的行数。
2.ColumnCount属性
设置作图数据的列数。
3.TitleText属性
设置图题。
4.RowLabelCount属性
设置行标的个数。
5.RowLabel属性
设置行标。
6.ColumnLabelCount属性