加一个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如何实现柱状折线组合图,请教高手,最好有个例子给我看看,谢谢!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)