JFreeChart(二)之饼图

JFreeChart(二)之饼图

转载自

在饼图中,每个扇区的弧长成正比它代表的数量。本章演示了如何使用JFreeChart 从一个给定的业务数据创建饼图。

业务数据

下面的例子描述了移动销售饼图。以下是不同移动品牌和销售(每天单位)列表。

S.N.手机品牌销售(天)
1Iphone 5S20
2Samsung Grand20
3MOTO G40
4Nokia Lumia10

基于AWT 应用

以下是对从上述给定的信息创建饼图的代码。此代码可以帮助嵌入一个饼图在任何 应用程序。

import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
 
public class PieChart_AWT extends ApplicationFrame 
{
   public PieChart_AWT( String title ) 
   {
      super( title ); 
      setContentPane(createDemoPanel( ));
   }
   private static PieDataset createDataset( ) 
   {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );  
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );   
      dataset.setValue( "MotoG" , new Double( 40 ) );    
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) );  
      return dataset;         
   }
   private static JFreeChart createChart( PieDataset dataset )
   {
      JFreeChart chart = ChartFactory.createPieChart(      
         "Mobile Sales",  // chart title 
         dataset,        // data    
         true,           // include legend   
         true, 
         false);

      return chart;
   }
   public static JPanel createDemoPanel( )
   {
      JFreeChart chart = createChart(createDataset( ) );  
      return new ChartPanel( chart ); 
   }
   public static void main( String[ ] args )
   {
      PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );  
      demo.setSize( 560 , 367 );    
      RefineryUtilities.centerFrameOnScreen( demo );    
      demo.setVisible( true ); 
   }
}

让我们继续上面PieChart_AWT.java文件中的Java代码,然后从命令提示符下编译并运行它,如下所示:

$javac PieChart_AWT.java 
$java PieChart_AWT 

如果一切顺利,它会编译并运行生成以下饼图:

www.zeeklog.com  - JFreeChart(二)之饼图

如果不需要在应用程序嵌入图表中,那么可以在命令提示符下创建图表的图像。 JFreeChart允许以JPG或PNG格式保存图表图像。

JPEG创建图像

让我们重新写上面的例子,生成命令行JPEG图像。以下是通过JFreeChart库,按要求提供两个API,用它来生成PNG或JPEG图像。

saveChartAsPNG() - API用来保存图像为PNG格式。

saveChartAsJPEG() - API用来保存图像JPEG格式。

import java.io.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class PieChart {
   public static void main( String[ ] args ) throws Exception
   {

      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue("IPhone 5s", new Double( 20 ) );
      dataset.setValue("SamSung Grand", new Double( 20 ) );
      dataset.setValue("MotoG", new Double( 40 ) );
      dataset.setValue("Nokia Lumia", new Double( 10 ) );

      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales", // chart title
         dataset, // data
         true, // include legend
         true,
         false);
         
      int width = 640; /* Width of the image */
      int height = 480; /* Height of the image */ 
      File pieChart = new File( "PieChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

保持PieChart.java文件中如上面的Java代码,然后从命令提示符下编译并运行它,如下所示:

$javac PieChart.java 
$java PieChart 

如果一切顺利,它会编译并运行在当前的目录中创建JPEG图像文件为namedPieChart.jpeg。

Read more

使用本地大模型调用代码,根本就是一场骗局!

使用本地大模型调用代码,根本就是一场骗局!

通过大模型调用其他工具到底可不可行?ChatGPT 或许能轻松搞定一切,但同样的需求落在本地大模型上,恐怕就要打个问号了。 法国开发工程师 Emilien Lancelot 尝试了多款号称具备工具调用功能的 agent 框架,来看看本地大模型到底能不能完成任务,但结果就像他总结的“一无所获”。是什么让这位工程师失望了? 用 AutoGPT,得会点“糊弄学” AutoGPT 是款貌似强大的框架,提供很酷的 CLI 外加 Flutter UI,能够通过浏览器创建 agent。其主要功能是处理用户的文档、音频、视频等本地内容。 但是……它主要依靠 ChatGPT 或其他专有大模型服务来完成繁重工作,至少给我们的感觉是如此。 我们必须“唬弄”AutoGPT 才能使用 Ollama 端点,让其误认为是 ChatGPT。 ## OPENAI_API_KEY - OpenAI API

By Ne0inhk
详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

Poe Encoder-only 架构的特点 Encoder-only 模型只使用 Transformer 的编码器部分,专注于对输入序列的理解和表征学习。这类模型通常被用在需要对输入文本进行深度理解的任务上,如文本分类、问答和语义匹配。以下是 Encoder-only 架构的核心特点: 1. 双向上下文建模 * 特点:Encoder-only 模型通过自注意力机制(Self-Attention)同时关注输入序列的前后文。 * 优势:相比单向模型(如 Decoder-only),它可以更全面地捕捉输入序列的全局语义,适合需要理解复杂上下文的任务。 * 实现方式:在训练过程中,不对输入序列进行因果掩码(Causal Masking),允许模型在任何位置访问序列的所有位置。 * 例子:BERT 的 Masked Language Model(MLM)训练任务通过随机遮盖部分单词,依赖左侧和右侧的信息来预测被遮盖的词,即双向建模的典型体现。 2. 适用于理解任务 * 特点:Encoder-only 模型专注于理解输入序列,而不生成输出序列,因此适合处理分类、

By Ne0inhk
手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解 原创 极客见识  2025年02月09日 09:02 广东 DeepSeek 通过发布其开源推理模型 DeepSeek-R1 颠覆了 AI 格局,该模型使用创新的强化学习技术,以极低的成本提供与 OpenAI 的 o1 相当的性能。 更令人印象深刻的是,DeepSeek 已将其推理能力提炼成几个较小的模型。这篇文章,我们将使用其蒸馏版本之一引导大家完成 DeepSeek-R1 的整个微调过程。 本文章将演示了如何微调其中一个模型(使用我们自己的自定义思维链数据集),然后保存和部署微调后的模型。 高级推理模型微调 DeepSeek 简介 DeepSeek-R1 是由深度求索(DeepSeek)公司开发的突破性推理模型。DeepSeek-R1 基于 DeepSeek-V3-Base(总共 671B 个参数,每次推理 37B 处于活动状态)构建,使用强化学习 (RL) 在提供最终答案之前生成思路链

By Ne0inhk
LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到 凌青羽  2025年02月09日 09:30 上海 蒙特卡洛树搜索算法的核心是:选择与模拟。 蒙特卡洛树搜索算法的主要目标是:给定一个游戏状态来选择最佳的下一步。 前言 在讲解蒙特卡罗树算法之前,我们先玩一个“赌博”游戏。多臂老虎机(Multi-Armed Bandits)。 多臂老虎机(Multi-Armed Bandits) 游戏规则如下:赌博机有K个摇臂,每次摇动其中的任意一个摇臂,赌博机都会随机吐出一些硬币。现在允许你摇T次,请问如何尝试使得收益最大化。(有限次数的尝试的收益最大化) 思考一下,你会如何尝试?(是下面的玩法中的哪一种类型呢?) * • 纯随机(Random):每次随机选一个摇臂进行摇动。 * • 劣势:能算个期望收益,但收益不是最大的。 * • 仅探索(Exploration-only):每个摇臂摇动T/K次。 * • 相当于每个摇臂摇动的次数都一样。(劣势:浪费次数在收益较差的摇臂上) * • 仅利用(Exploitation-only):

By Ne0inhk