关于OWC组件的问题,请高手解决。

zeroboiledwater 2004-10-27 12:37:47
我想用owc组件在网页上生成多分组柱状图。可是网上的资料都是单一的柱状图。多分组柱状图的x轴如下。
----------------------------------X轴
| 分组1成员1 | 分组1成员2 | 分组2成员1 | 分组2成员2 |
| | | | |
| 分组1 | 分组2 |

请高手指教。最好用C#代码,100分。
...全文
367 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinguangjun123 2004-11-05
  • 打赏
  • 举报
回复
gwaresoft()不对吗?,弄张图出来。!
zeroboiledwater 2004-10-29
  • 打赏
  • 举报
回复
gwaresoft()给的程序和最上面的程序是一样的我重新说一下需求:
__ __ __
__| | __ | |__ __| |
| | | | |__ | | | | | |
| | | | | | | | | | | |
——————————————————————---------------
| 固定电话 | 800电话 | 固定电话 | 800电话 |
| 第一季度 | 第二季度 |

在图上以季度分组,每个季度分组中的chDimCategories都是相同的。
gwaresoft 2004-10-28
  • 打赏
  • 举报
回复
多添加几个Series就可以了
chart.SeriesCollection.Add(0);
chart.SeriesCollection.Add(1);
chart.SeriesCollection.Add(2);
chart.SeriesCollection.Add(3);
leonkim 2004-10-28
  • 打赏
  • 举报
回复
添加两个序列就可以了.
每个序列里多加几个值,就能实现你要的功能.
我用Delphi做过.

//分组一
chtCharge.Series[0].Add(88,'一');
chtCharge.Series[0].Add(88,'二');
//分组二
chtCharge.Series[1].Add(100,'一');
chtCharge.Series[1].Add(100,'二');
gwaresoft 2004-10-28
  • 打赏
  • 举报
回复
上面的注意修改 chart.Type 为你想要的样式
gwaresoft 2004-10-28
  • 打赏
  • 举报
回复
刚好做过 给你代码
string caption,val1,val2,val3,val4 ; \\caption="A\tb\tc",val1="10\t20\t\30",val2="10\t\20\5".....


下面是代码 自己看看了

//-------------------开始做图

OWC.ChartSpace chartspace=new OWC.ChartSpace();
OWC.WCChart chart=chartspace.Charts.Add(0);
chart.Type=OWC.ChartChartTypeEnum.chChartTypeBarClustered;

chart.SeriesCollection.Add(0);
chart.SeriesCollection.Add(1);
chart.SeriesCollection.Add(2);
chart.SeriesCollection.Add(3);




chart.HasLegend=true;

chart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,"固定电话");
chart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral," 800电话");
chart.SeriesCollection[2].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,"移动短信");
chart.SeriesCollection[3].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,"联通短信");



chart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimCategories,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,caption);
//给定数据值
chart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,val1);

chart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimCategories,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,caption);
//给定数据值
chart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,val2);


chart.SeriesCollection[2].SetData (OWC.ChartDimensionsEnum.chDimCategories,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,caption);
//给定数据值
chart.SeriesCollection[2].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,val3);

chart.SeriesCollection[3].SetData (OWC.ChartDimensionsEnum.chDimCategories,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,caption);
//给定数据值
chart.SeriesCollection[3].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral,val4);



DateTime dt=DateTime.Now;
String datename;
datename=dt.ToString("s");

datename=datename.Replace(":","0");

datename+=".gif";




chartspace.ExportPicture(ConfigurationSettings.AppSettings["imgPath"]+"\\"+datename,"gif",1024,768);


Image1.ImageUrl="QueryImg/"+datename;
zeroboiledwater 2004-10-28
  • 打赏
  • 举报
回复
自己顶
xueqs 2004-10-27
  • 打赏
  • 举报
回复
gz
zeroboiledwater 2004-10-27
  • 打赏
  • 举报
回复
线对的不直,不同行的“|”是在一列上。
zeroboiledwater 2004-10-27
  • 打赏
  • 举报
回复
要求是单一的图像文件。
wudixiaocaoren 2004-10-27
  • 打赏
  • 举报
回复
做一个Table,里面有四个格,然后把你用OWC生成的图放在里面就OK了
zeroboiledwater 2004-10-27
  • 打赏
  • 举报
回复
我自己顶
zeroboiledwater 2004-10-27
  • 打赏
  • 举报
回复
goody9807()给的程序是画单一柱状图:只可以做到在分组中放多个柱.效果如下:
___
___| | __
| | | | |__
| | | | | |
——————————————————————
| 分组1 | 分组2|.....

我要的效果如下:

__ __ __
__| | __ | |__ __| |
| | | | |__ | | | | | |
| | | | | | | | | | | |
——————————————————————---------------
| 分组1成员1 | 分组1成员2| 分组2成员1 | 分组2成员2|
| 分组1 | 分组2 |
softchao 2004-10-27
  • 打赏
  • 举报
回复
mark
comeon_data 2004-10-27
  • 打赏
  • 举报
回复
顶一个
goody9807 2004-10-27
  • 打赏
  • 举报
回复
using System;
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

}
}

sniper81 2004-10-27
  • 打赏
  • 举报
回复
是不是可以采用那种柱状图?
就是在每个柱上分为不同颜色的几段,其中每个柱时用分组1、2来划分的,每个柱上的不同颜色的长度是由分组成员1、2来决定的,这样的柱状图应该能达到显示的目的吧

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧