vb中怎么可以动态生成柱形图,,,,,,,,急!!!!急!!!!急!!!!急!!!!急!!!!

vb中怎么可以动态生成柱形图,,,,,,,,急!!!!急!!!!急!!!!急!!!!急!!!!,第1张

加一个Picture控件,AutoRedraw = true,BackColor=白,ScaleMode= 3-pixel

然后把数据放到数组里面,我的程序里面数组叫 datainput

代码给你, 你自己去微调吧

Private Type Bar

BarName As String

BarData(1 To 3) As Integer

End Type

Dim dataInput(10) As Bar

Dim dataInputCount As Integer

Const XXX = 10

Const YYY = 100

Private Sub Command4_Click()

dataInputCount = 3

dataInput(1)BarName = "2001"

dataInput(1)BarData(1) = "10"

dataInput(1)BarData(2) = "20"

dataInput(1)BarData(3) = "30"

dataInput(2)BarName = "2002"

dataInput(2)BarData(1) = "15"

dataInput(2)BarData(2) = "25"

dataInput(2)BarData(3) = "35"

dataInput(3)BarName = "2003"

dataInput(3)BarData(1) = "18"

dataInput(3)BarData(2) = "28"

dataInput(3)BarData(3) = "38"

Dim i As Integer

Dim j As Integer

For i = 1 To dataInputCount

For j = 1 To 3

Select Case j

Case 1: Picture1ForeColor = vbRed

Case 2: Picture1ForeColor = vbGreen

Case 3: Picture1ForeColor = vbBlue

End Select

Picture1Line (XXX + i 50 + j 10, YYY)-(XXX + i 50 + j 10 + 5, YYY - dataInput(i)BarData(j)), , BF

Next j

Next i

End Sub

以前做过一个这样的,你可以参考下,大致原理是这样的,把数据库读入的数据放到一个特定的区域里,然后把图表的数据源设置为单元格区域。这样每次从数据库里读出数据后,图标根据单元格区域数据自动更新。要用vba代码实现。

是jFreeChart吧?

这是Struts中结合 jFreeChart 画3种图,是我自己一个项目用到的 你自己看看吧 其中为生成List数据 我是在数据库用取出来的 jFreeChart 的接受数据应该是 类似于二维数组型的 这个网上有介绍

public String chartDB() {

if (styleequals("饼图")) {

drawPieChart();

} else if (styleequals("垂直柱状统计图")) {

drawBarChart();

} else if (styleequals("折线统计图")) {

drawLineChart();

}

return SUCCESS;

}

private void drawLineChart() {

Map<String, Object> session = ActionContextgetContext()getSession();

recordids = (String[]) sessionget("recordids");

String[] field = new String[wordlength]; // 获得要查询的字段

String[] rowKeys = new String[wordlength]; // 各字段的中文名称

for (int i = 0; i < wordlength; i++) {

field[i] = word[i]split("-")[0];

rowKeys[i] = word[i]split("-")[1];

}

StringBuffer sb = new StringBuffer("SELECT ");

for (int j = 0; j < fieldlength; j++) {

sbappend("sum(" + field[j] + "), ");

}

sb

append("DATE_FORMAT(bas_datestart,'%Y-%m') from disasterrecord where bas_recordid in "

+ UtiltypesToString(recordids)

+ " group by DATE_FORMAT(bas_datestart,'%Y-%m')");

List<Object[]> list = new SearchService()findBySql(sbtoString());

DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

String[] category = new String[listsize()];

for (int k = 0; k < fieldlength; k++) {

for (int j = 0; j < listsize(); j++) {

if(listget(j)[fieldlength]==null){

category[j] = "";

}else{

category[j] = listget(j)[fieldlength]toString();

}

if(listget(j)[k] ==null){

dataSetaddValue(new Double(0), rowKeys[k], category[j]);

}else{

dataSetaddValue(new Double(listget(j)[k]toString()),

rowKeys[k], category[j]);

}

}

}

chart = ChartFactorycreateLineChart(title, xname, yname, dataSet,

PlotOrientationVERTICAL, true, true, false);

chartgetTitle()setFont(new Font("宋体", FontBOLD, 15));

chartgetLegend()setItemFont(new Font("黑体", FontBOLD, 15));

CategoryPlot plot = (CategoryPlot) chartgetPlot();

CategoryAxis domainAxis = plotgetDomainAxis();

/------设置X轴坐标上的文字-----------/

domainAxissetTickLabelFont(new Font("黑体", FontPLAIN, 11));

/------设置X轴的标题文字------------/

domainAxissetLabelFont(new Font("宋体", FontPLAIN, 12));

NumberAxis numberaxis = (NumberAxis) plotgetRangeAxis();

/------设置Y轴坐标上的文字-----------/

numberaxissetTickLabelFont(new Font("黑体", FontPLAIN, 12));

/------设置Y轴的标题文字------------/

numberaxissetLabelFont(new Font("黑体", FontPLAIN, 12));

}

private void drawBarChart() {

Map<String, Object> session = ActionContextgetContext()getSession();

recordids = (String[]) sessionget("recordids");

String[] field = new String[wordlength]; // 获得要查询的字段

String[] rowKeys = new String[wordlength]; // 各字段的中文名称

for (int i = 0; i < wordlength; i++) {

field[i] = word[i]split("-")[0];

rowKeys[i] = word[i]split("-")[1];

}

StringBuffer sb = new StringBuffer("SELECT ");

if (typeequals("各地区各灾害")) {

for (int j = 0; j < fieldlength; j++) {

sbappend("sum(" + field[j] + "), ");

}

sb

append(" bas_cityarea from disasterrecord where bas_recordid in "

+ UtiltypesToString(recordids)

+ " group by bas_cityarea");

} else {

for (int j = 0; j < fieldlength; j++) {

sbappend("sum(" + field[j] + "), ");

}

sb

append("Year(bas_datestart) from disasterrecord where bas_recordid in "

+ UtiltypesToString(recordids)

+ " group by Year(bas_datestart)");

}

List<Object[]> list = new SearchService()findBySql(sbtoString());

String[] columnKeys = new String[listsize()]; // 获得 各地区名 或者 年份

for (int k = 0; k < listsize(); k++) {

columnKeys[k] = listget(k)[fieldlength]toString();

}

double[][] data = new double[rowKeyslength][columnKeyslength];

for (int m = 0; m < rowKeyslength; m++) {

for (int n = 0; n < columnKeyslength; n++) {

if (listget(n)[m] == null) {

data[m][n] = new Double(0);

} else {

data[m][n] = new Double(listget(n)[m]toString());

}

}

}

CategoryDataset dataset = DatasetUtilitiescreateCategoryDataset(

rowKeys, columnKeys, data);

chart = ChartFactorycreateBarChart3D(title, xname, yname, dataset,

PlotOrientationVERTICAL, true, true, false);

CategoryPlot plot = chartgetCategoryPlot();// 获取图表区域对象

CategoryAxis domainAxis = plotgetDomainAxis();

// 水平底部列表

domainAxissetLabelFont(new Font("黑体", FontBOLD, 14));

// 水平底部标题

domainAxissetTickLabelFont(new Font("宋体", FontBOLD, 12));

// 垂直标题

ValueAxis rangeAxis = plotgetRangeAxis();// 获取柱状

rangeAxissetLabelFont(new Font("黑体", FontBOLD, 15));

TextTitle textTitle = chartgetTitle();

textTitlesetFont(new Font("黑体", FontBOLD, 15));

BarRenderer3D renderer = new BarRenderer3D();

renderersetBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderersetBaseItemLabelsVisible(true);

renderersetBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchorOUTSIDE12, TextAnchorBASELINE_LEFT));

renderersetItemLabelAnchorOffset(10D);

renderersetItemLabelFont(new Font("宋体", FontPLAIN, 12));

renderersetItemLabelsVisible(true);

//设置每个地区所包含的平行柱的之间距离

//renderersetItemMargin(03);

plotsetRenderer(renderer);

chartgetLegend()setItemFont(new Font("黑体", FontBOLD, 15));

}

public void drawPieChart() {

Map<String, Object> session = ActionContextgetContext()getSession();

recordids = (String[]) sessionget("recordids");

String sql = "";

String field[] = word[0]split("-");

if (typeequals("各地区各灾害")) {

sql = "SELECT sum("

+ field[0]

+ ") +'', bas_cityarea from disasterrecord where bas_recordid in "

+ UtiltypesToString(recordids) + " group by bas_cityarea";

} else {

sql = "SELECT sum("

+ field[0]

+ ") +'', Year(bas_datestart) from disasterrecord where bas_recordid in "

+ UtiltypesToString(recordids)

+ " group by Year(bas_datestart)";

}

List<Object[]> list = new SearchService()findBySql(sql);

DefaultPieDataset data = new DefaultPieDataset();

for (Object[] o : list) {

if(o[0] == null){

datasetValue(o[1]toString(), new Double(0));

}

datasetValue(o[1]toString(), new Double(o[0]toString()));

}

chart = ChartFactorycreatePieChart(title, data, true, true, false);

Font font = new Font("SimSun", 10, 20);

TextTitle txtTitle = null;

txtTitle = chartgetTitle();

txtTitlesetFont(font);

PiePlot pieplot = (PiePlot)chartgetPlot();

pieplotsetLabelFont(font);

chartgetLegend()setItemFont(font);

}

一、 建立数据库 方法一:使用向导,调出方法⑴可采用“文件”菜单“新建” ⑵或采用“工具”菜单“向导” 方法二:使用数据库设计器 1、 使用向导建立数据库 特点:可以方便快捷地创建数据库,但只适用于一般常用的数据库。 2、 使用数据库设计器建立数据库 特点: 最大特点就是灵活性 *** 作步骤:⑴“文件”菜单“新建”,显示新建对话框 ⑵选择“数据库”和单击“新建文件”钮 ⑶在创建对话框中输入新数据库的名称和单击“保存”钮 效果:数据库文件已经建立完成。 显示出“数据库设计器”窗口和“数据库设计工具” 打开“数据库设计器”工具方法:“显示”菜单“工具栏” 选择“数据库设计器” 三、建立表 1、 数据库与数据表 可以先建立自由表,然后再添加到数据库中 建立新的数据库表,系统会将其自动加入到数据库中。 2、 建立自由表 注意:自由表独立于任何数据库,如需要课添加到数据库中,但不能同时 将一个表添加到多个数据库。 预备知识:建立表必须首先建立表的结构 即要描述各个字段的字段名、字段类型、字段宽度、如果是数 值型还有小数位数,以及索引、是否再字段中允许空值(选择NULL) 3、 建立数据库表 有三种方法: 法一、“文件”菜单“新建”,显示新建对话框 选择“表”和单击“新建文件”钮 在创建对话框中输入新数表名称和单击“保存”钮 法二、再建立完数据库后,不关闭“数据库设计器”窗口,单击鼠标右键后 选择快捷菜单种的“新表”,单击“新表”钮,再创建对话框输入表 名 后“保存” 法三、使用数据库设计器工具栏 (“显示”菜单“工具栏”) 选择“数据库设计器”工具栏种的第一个钮“新建表” 二、使用命令建立数据库、数据库表 1、 建立数据库 CREATE DATABASE 数据库名称 2、 建立数据库表 CREATE TABLE │DBF 表名 [FREE] (字段名1 字段类型 [(字段宽度 [,小数位数] )] [(字段名2……] 二、使用向导建立查询 1、查询形式分类:查询向导:标准查询 交叉表向导:以电子表格形式输出查询结果 图形向导:以电子图形形式输出查询结果 2、使用查询向导建立查询步骤: [0]使用查询向导前必须先打开用到的库表或自由表 ⑴字段选取 ⑵记录筛选 ⑶选择排序方式 ⑷查询完成(选择保存并运行)(浏览查询) ⑸打开查询设计器,修改查询

以上就是关于vb中怎么可以动态生成柱形图,,,,,,,,急!!!!急!!!!急!!!!急!!!!急!!!!全部的内容,包括:vb中怎么可以动态生成柱形图,,,,,,,,急!!!!急!!!!急!!!!急!!!!急!!!!、EXCEL中怎样用vba实现动态创建柱形图、java中用jframechart如何实现柱状折线组合图,请教高手,最好有个例子给我看看,谢谢!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9380170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存