我想画一个图形 数据源如下 , a列为x周 , b 列为左侧y轴 我先用a b 列的数据用OWC在web上显示
了一个柱状图 , 我想把c 列(b列数据累加在除b列总和) 也添加到这个图像上 ,在这个图形的右侧
添加一个轴 其scaling 为 0% - 100% 使用一个曲线显示在这个图形上,该如何实现?请高手帮忙提供一个思路,谢谢!!
a b c
1 3 0.12
2 4 0.28
3 5 0.48
4 3 0.60
5 4 0.76
6 2 0.84
7 1 0.88
8 1 0.92
8 2 1.00
了一个柱状图 , 我想把c 列(b列数据累加在除b列总和) 也添加到这个图像上 ,在这个图形的右侧
添加一个轴 其scaling 为 0% - 100% 使用一个曲线显示在这个图形上,该如何实现?请高手帮忙提供一个思路,谢谢!!
a b c
1 3 0.12
2 4 0.28
3 5 0.48
4 3 0.60
5 4 0.76
6 2 0.84
7 1 0.88
8 1 0.92
8 2 1.00
解决方案 »
- c# 打印
- 如下情况,该如何建表,还有如何执行用户在页面上的添加信息的操作
- 读取另一网站的web.config
- webservice 错误
- 关于DropDownList的一个问题,只剩10分大家帮忙!不胜感激!
- 哪位有书 ASP_NET.XML高级编程-C#编程篇 的源码
- 要使DataGrid行交替使用两种不同的背景图象,怎么实现?在那里添加
- 应用程序中的服务器错误?
- 如何停止验证控件的验证?
- 怎样把DropDownlist的内容绑定为现在时间的年,月,日?
- 文件传输问题----使用web服务和windows监听程序接收文件 哪个比较好?
- 能不能读取在文本框中选定的子字符串?在线等!急!!!!!!!!!!
http://www.evget.com/view/service.asp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="javascript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5";>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:placeholder id="ChartHolder" runat="server"></asp:placeholder>
</form>
</body>
</HTML>
OWC.aspx.vb:Imports System
Imports OWC
Imports System.Web.UIPublic Class OWC
Inherits System.Web.UI.Page
Protected WithEvents ChartHolder As System.Web.UI.WebControls.PlaceHolder#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
'创建ChartSpace对象来放置图表
Dim objCSpace As ChartSpace = New ChartSpaceClass()
'在ChartSpace对象中添加图表,Add方法返回chart对象
Dim objChart As WCChart = objCSpace.Charts.Add(0)
'指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered '指定图表是否需要图例
objChart.HasLegend = True '给定标题
objChart.HasTitle = True
objChart.Title.Caption = "1-6说数据分布图" '给定x,y轴的图示说明
objChart.Axes(0).HasTitle = True
objChart.Axes(0).Title.Caption = "Y 轴 : 数量"
objChart.Axes(1).HasTitle = True
objChart.Axes(1).Title.Caption = "X 轴: 月份" '计算数据
'*categories 和 values 可以用tab分割的字符串来表示*
Dim strSeriesName As String = "图例 1"
Dim strCategory As String = "1" + ControlChars.Tab + "2" + ControlChars.Tab _
+ "3" + ControlChars.Tab + "4" + ControlChars.Tab + "5" + ControlChars.Tab _
+ "6" + ControlChars.Tab
Dim strvalue As String = "9" + ControlChars.Tab + "8" + ControlChars.Tab _
+ "4" + ControlChars.Tab + "10" + ControlChars.Tab + "12" + ControlChars.Tab _
+ "6" + ControlChars.Tab '添加一个series
objChart.SeriesCollection.Add(0) '给定series的名字
objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames,_
ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName) '给定分类
objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories,_
ChartSpecialDataSourcesEnum.chDataLiteral, strCategory) '给定值
objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimvalues,_
ChartSpecialDataSourcesEnum.chDataLiteral, strvalue)
'输出成GIF文件.
Dim strAbsolutePath As String = (Server.MapPath(".")) + "\Images\test.gif"
objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350) '创建GIF文件的相对路径.
Dim strRelativePath As String = "Images/test.gif"
'把图片添加到placeholder.
Dim strImageTag As String = "<IMG SRC='890_files/" + strrelativepath + "'/>" ChartHolder.Controls.Add(New LiteralControl(strImageTag))
End Sub
End Class
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop;
namespace Microsoft.Office.Interop.OWC使用指南
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.PlaceHolder ChartHolder;
private Microsoft.Office.Interop.OWC.ChartChartTypeEnum GetChartType(int typeIndex)
{
int i;
Microsoft.Office.Interop.OWC.ChartChartTypeEnum myTE;
i=typeIndex;
switch(i)
{
case 0:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
return myTE;
case 1:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypePie;
return myTE;
case 2:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeSmoothLine;
return myTE;
case 3:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeArea;
return myTE;
case 4:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeRadarLine;
return myTE;
default:
myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
return myTE;
}
} private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//创建ChartSpace对象来放置图表
Microsoft.Office.Interop.OWC.ChartSpace objCSpace = new Microsoft.Office.Interop.OWC.ChartSpaceClass(); //在ChartSpace对象中添加图表,Add方法返回chart对象
Microsoft.Office.Interop.OWC.ChChart objChart = objCSpace.Charts.Add (0); //指定图表的类型。类型由Microsoft.Office.Interop.OWC.ChartChartTypeEnum枚举值得到
//objChart.Type = Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
//上面的是画棒图的方法
//objChart.Type = Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeSmoothLine;
//上面的是画平滑曲线的方法此主题相关图片如下: objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeRadarLine;
//上面的是画雷达线的方法
//objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeArea;
//上面的是画区域线的方法 //objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypePie;
//上面的是画饼图的方法,但是要关掉一些参数,比如
/*//objChart.Axes[0].HasTitle = true;
//objChart.Axes[0].Title.Caption = "Y : 数量";
//objChart.Axes[1].HasTitle = true;
//objChart.Axes[1].Title.Caption = "X : 月份"; * */此主题相关图片如下:
此主题相关图片如下:
//指定图表是否需要图例
objChart.HasLegend = true; //给定标题
objChart.HasTitle = true;
objChart.Title.Caption= "上半年分布图"; //给定x,y轴的图示说明
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = "Y : 数量";
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = "X : 月份"; //计算数据
/*categories 和 values 可以用tab分割的字符串来表示*/
string strSeriesName = "图例 1";
string strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t'+"4" + '\t' + "5" + '\t' + "6" + '\t';
string strvalue = "9" + '\t' + "8" + '\t' + "4" + '\t'+"10" + '\t' + "12" + '\t' + "6" + '\t'; //添加一个series
objChart.SeriesCollection.Add(0); //给定series的名字
objChart.SeriesCollection[0].SetData (Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimSeriesNames,
+ (int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName); //给定分类
objChart.SeriesCollection[0].SetData (Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimCategories,
+ (int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory); //给定值
objChart.SeriesCollection[0].SetData
(Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimvalues,
(int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strvalue);
//输出成GIF文件.
string strAbsolutePath = (Server.MapPath(".")) + "\\test.gif";
objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350); //创建GIF文件的相对路径.
string strRelativePath = "./test.gif"; //把图片添加到placeholder.
string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
ChartHolder.Controls.Add(new LiteralControl(strImageTag));
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion }
}
如果用ADO.NET的DataSet对象,可以生成以TAB分割的字符串:strvalue += (nodes.Item(j).ChildNodes.Item(0).InnerText + '\t');
strCategory += (nodes.Item(j).ChildNodes.Item(1).InnerText + '\t');Microsoft.Office.Interop名称空间指向Office XP PIA,PIA应该事先安装到Web服务器上。编译源代码时要用到Office XP PIA OWC的DLL文件。如果用VS.NET编译,只要加入一个Microsoft.Office.Interop.Owc.dll文件的引用即可(位于解开Office XP PIA文件的目录),如果从命令行编译,必须按照下列方式使用/r:参数: vbc /t:library /out:bin\getchart.dll /r:System.dll /r:System.Web.dll
/r:System.Data.dll
/r:C:\oxppia\Microsoft.Office.Interop.Owc.dll getchart.aspx.vb
可以看帮助 具体请看帮助文件 Ungroup 方法
Sub Window_Onload() Dim asSeriesNames(1)
Dim asCategories(3)
Dim aiSeries1(3)
Dim alSeries2(3)
Dim chConstants
Dim chtNewChart
Dim serUnitSales
Dim serDispInc
Dim axIncomeAxis asSeriesNames(0) = "UnitSales"
asSeriesNames(1) = "Disposable Income" asCategories(0) = "Item 1"
asCategories(1) = "Item 2"
asCategories(2) = "Item 3"
asCategories(3) = "Item 4" aiSeries1(0) = 75
aiSeries1(1) = 84
aiSeries1(2) = 30
aiSeries1(3) = 94 alSeries2(0) = 14522
alSeries2(1) = 17321
alSeries2(2) = 9424
alSeries2(3) = 41782 Set chConstants = ChartSpace1.Constants ' Enagble the display of the legend.
ChartSpace1.HasChartSpaceLegend = True ' Add a new chart to Chartspace1.
Set chtNewChart = ChartSpace1.Charts.Add ' Specify that the chart is a column chart.
chtNewChart.Type = chConstants.chChartTypeLineMarkers ' Bind the chart to the arrays.
chtNewChart.SetData chConstants.chDimSeriesNames, chConstants.chDataLiteral, asSeriesNames
chtNewChart.SetData chConstants.chDimCategories, chConstants.chDataLiteral, asCategories Set serUnitSales = chtNewChart.SeriesCollection(0) serUnitSales.SetData chConstants.chDimValues, chConstants.chDataLiteral, aiSeries1 Set serDispInc = chtNewChart.SeriesCollection(1) serDispInc.SetData chConstants.chDimValues, chConstants.chDataLiteral, alSeries2 ' Ungroup the series.
serDispInc.Ungroup True ' Add a new value axis to the chart based on the values in the series.
Set axIncomeAxis = chtNewChart.Axes.Add(serDispInc.Scalings(chConstants.chDimValues)) ' Place the axis on the right side of the chart.
axIncomeAxis.Position = chConstants.chAxisPositionRight ' Display the series as columns.
serDispInc.Type = chConstants.chChartTypeColumnClusteredEnd Sub