javaweb给数据进行设置饼图,折线图,柱状图

本文介绍了如何在Java Web应用中使用JFreeChart库来创建饼状图、折线图和柱状图。提供了具体的代码示例,包括创建数据集、设置图表样式以及显示图表的方法。饼状图通过`Bzt`工具类创建,折线图通过`Zxt`工具类创建,柱状图通过`Tzt`工具类创建。这些工具类中包含了设置图表标题、轴标签、样式和数据的方法。示例代码展示了如何从数据源获取数据并转换为图表所需格式。

1.只需要引入三个jar包如下图

然后分别有已经写好的三个绘制工具类

1.饼状图代码

package com.lisheng.util;

import java.awt.Font;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;

public class Bzt
{

    /**
     * 创建饼状图
     * 
     * @param title
     *            标题
     * @param map
     *            键值对(水果名称 水果数量)
     * @return
     */
    public static JFreeChart createPieChart(String title, Map map)
    {
        DefaultPieDataset dpd = createPieDataset(map);
        // 创建PieChart对象(标题,数据集,是否显示图例,是否生成工具提示,是否生成URL链接)
        JFreeChart chart = ChartFactory.createPieChart3D(title, dpd, true,true,false);
        setPie3DStyle(chart);
        return chart;
    }

    /**
     * 创建饼状图数据
     * 
     * @param map
     * @return
     */
    private static DefaultPieDataset createPieDataset(Map map)
    {
        DefaultPieDataset dpd = new DefaultPieDataset();
        Set<String> set = map.keySet();
        
        for (Iterator<String> itor = set.iterator(); itor.hasNext();)
        {
            String key = itor.next();
            double x = Double.parseDouble(map.get(key).toString());
            dpd.setValue(key, x);
        }
        return dpd;
    }


    /**
     * 设置饼状图3D样式
     * 
     * @param chart
     */
    private static void setPie3DStyle(JFreeChart chart)
    {
        // 获得3D的水晶饼图对象
        PiePlot3D pieplot3d = (PiePlot3D) chart.getPlot();
        // 设置开始角度
        pieplot3d.setStartAngle(150D);
        // 设置方向为”顺时针方向“
        pieplot3d.setDirection(Rotation.CLOCKWISE);
   &nb

web页上绘制曲线等组件(c#) 例子: 生成表******************************************** private void InitializeComponent() { this.myBarGraph.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraphBar); this.myLineGraph.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraphLine); } private void OnRenderGraphBar(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane) { myBarMethod(zgw, g, masterPane, strYear, strMonth, compareType); } private void OnRenderGraphLine(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane) { myLineMethod(zgw, g, masterPane, douYear, douMonth); } private void myBarMethod(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane, string[] strYear, string[] strMonth, string compareType) { GraphPane myPane = masterPane[0]; myPane.Title.Text = title + "柱状图分析"; myPane.XAxis.Title.Text = "时间(月/年)"; if (compareType == "AddValue") { myPane.YAxis.Title.Text = "增加值"; } else { myPane.YAxis.Title.Text = "增加比例(%)"; } List<PointPairList> ListPointParitList = new List<PointPairList>(); for (int i = 0; i < strYear.Length; i++) { ListPointParitList.Add(new PointPairList()); } int n = 0; for (double x = 0; x < strMonth.Length; x += 1.0) { for (int i = 0; i < strYear.Length; i++) { //ListPointParitList[i].Add(x, randNum[n++] * multiplyValue); ListPointParitList[i].Add(x, GetFXData(strYear[i], strMonth[(int)x])); } } List<BarItem> ListBarItem = new List<BarItem>(); List<Color> ListColor = GetColor(); for (int i = 0; i < strYear.Length; i++) { ListBarItem.Add(new BarItem(strYear[i], ListPointParitList[i], ListColor[i])); ListBarItem[i] = myPane.AddBar(strYear[i], ListPointParitList[i], ListColor[i]); } myPane.XAxis.MajorTic.IsBetweenLabels = true; myPane.XAxis.Scale.TextLabels = strMonth; myPane.XAxis.Type = AxisType.Text; myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f); myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f); masterPane.AxisChange(g); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值