根据数据库数据画饼图

 

 

       数据库传入数据为   (分类、该分类下消费金额)

 

       效果图:

 

	private HashMap<String,Integer> getMonthData()
	{
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		ArrayList<String>kindlist = (ArrayList<String>) kdao.find();
		for(int i=0;i<kindlist.size();i++)
		{
			int kindsum = mdao.findSumOfKind(application.getUser_id(),kindlist.get(i),null,(String) year_pic_time.getText());
			map.put(kindlist.get(i),kindsum);
		}
		yearDataMap = map;
		return map;
	}
	
	/**
	 *  画饼图
	 */
	private void CreatePicBingTu()
	{
		year_pic.removeAllViews();
		CategorySeries dataset=buildCategoryDataset("月统计饼图", getMonthData());
		ArrayList<Integer>colors = new ArrayList<Integer>();
		colors.add(Color.BLACK);
		colors.add(Color.BLUE);
		colors.add(Color.GRAY);
		colors.add(Color.DKGRAY);
		colors.add(Color.RED);
		colors.add(Color.GREEN);
		
		ArrayList<Integer> colorlist= new ArrayList<Integer>();
		for(int i=0;i<yearDataMap.size();i++)
		{
			colorlist.add(colors.get(i));
		}
		DefaultRenderer renderer=buildCategoryRenderer(colorlist);
		
		graphicalView=ChartFactory.getPieChartView(getBaseContext(), dataset, renderer);//饼状图
		year_pic.addView(graphicalView);
	}
	
	protected CategorySeries buildCategoryDataset(String title, HashMap<String, Integer> map) 
	{
		        
	         CategorySeries series = new CategorySeries(title);
	         Set set = map.entrySet();
	         Iterator it = set.iterator();	         
	         Double sum = 0.0;
	         while(it.hasNext())
	         {
	        	 java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
	        	 sum+=Double.parseDouble(entry.getValue().toString());
	         }
	         
	         it = set.iterator();
	         while(it.hasNext())
	         {
	        	 double hundred;
	        	 java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
	        	 String key = entry.getKey().toString();
	        	 double value = Double.parseDouble(entry.getValue().toString());
	        	 if(sum>0)
	        	 {
	        		 hundred = value/sum*100;
	        		 
	        		 series.add(key+"  "+doubleFormat.format(hundred)+"%",value);
	        	 }
	        	 else series.add(key+"  "+"0%",value);
	         }
		     return series;
	}
	protected DefaultRenderer buildCategoryRenderer(ArrayList<Integer> colorlist) 
	{
		         DefaultRenderer renderer = new DefaultRenderer();
		         
		         renderer.setLegendTextSize(23);//设置左下角表注的文字大小
		          renderer.setLabelsTextSize(28.0f);
		         renderer.setMargins(new int[] { 20, 30, 15,0 });
		         //margins - an array containing the margin size values, in this order: top, left, bottom, right
		         for (int i=0;i<colorlist.size();i++) 
		         {
		           SimpleSeriesRenderer r = new SimpleSeriesRenderer();
		           r.setColor(colorlist.get(i));
		           renderer.addSeriesRenderer(r);
		         }
		         return renderer;
    }
	


 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值