`
snoopy7713
  • 浏览: 1170102 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

JFreeChart中文乱码解决方案(方法汇总)

阅读更多

由于JFreeChart组件的版本、操作平台、JDK的设置等因素,在使用JFreeChart组件时可能会出现中文乱码的现象。遇到此问题时,可通过设置文字的字体来解决问题。在此提供以下两种解决此问题的方法。
一、设置主题的样式(强烈推荐)
  在制图前,创建主题样式并制定样式中的字体,通过ChartFactory的setChartTheme()方法设置主题样式。

Java代码 复制代码  收藏代码
  1. //创建主题样式   
  2.    StandardChartTheme standardChartTheme= new  StandardChartTheme( "CN" );   
  3.     //设置标题字体   
  4.    standardChartTheme.setExtraLargeFont( new  Font( "隶书" ,Font.BOLD, 20 ));   
  5.     //设置图例的字体   
  6.    standardChartTheme.setRegularFont( new  Font( "宋书" ,Font.PLAIN, 15 ));   
  7.     //设置轴向的字体   
  8.    standardChartTheme.setLargeFont( new  Font( "宋书" ,Font.PLAIN, 15 ));   
  9.     //应用主题样式   
  10.    ChartFactory.setChartTheme(standardChartTheme);  
    //创建主题样式
       StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
       //设置标题字体
       standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));
       //设置图例的字体
       standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));
       //设置轴向的字体
       standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));
       //应用主题样式
       ChartFactory.setChartTheme(standardChartTheme);


  例如:

Java代码 复制代码  收藏代码
  1. package  com.zzs.jfreechart.demo;   
  2.   
  3. import  java.awt.Font;   
  4.   
  5. import  org.jfree.chart.ChartFactory;   
  6. import  org.jfree.chart.ChartFrame;   
  7. import  org.jfree.chart.JFreeChart;   
  8. import  org.jfree.chart.StandardChartTheme;   
  9. import  org.jfree.chart.plot.PlotOrientation;   
  10. import  org.jfree.chart.title.LegendTitle;   
  11. import  org.jfree.chart.title.TextTitle;   
  12. import  org.jfree.data.category.DefaultCategoryDataset;   
  13.   
  14. public   class  JfreeChartTest {   
  15.         
  16.      public   static   void  main(String[] args) {   
  17.     
  18. //     创建类别图(Category)数据对象   
  19.     
  20.        DefaultCategoryDataset dataset =  new  DefaultCategoryDataset();   
  21.     
  22.        dataset.addValue( 100 "北京" "苹果" );   
  23.     
  24.        dataset.addValue( 100 "上海" "苹果" );   
  25.     
  26.        dataset.addValue( 100 "广州" "苹果" );   
  27.     
  28.        dataset.addValue( 200 "北京" "梨子" );   
  29.     
  30.        dataset.addValue( 200 "上海" "梨子" );   
  31.     
  32.        dataset.addValue( 200 "广州" "梨子" );   
  33.     
  34.        dataset.addValue( 300 "北京" "葡萄" );   
  35.     
  36.        dataset.addValue( 300 "上海" "葡萄" );   
  37.     
  38.        dataset.addValue( 300 "广州" "葡萄" );   
  39.     
  40.        dataset.addValue( 400 "北京" "香蕉" );   
  41.     
  42.        dataset.addValue( 400 "上海" "香蕉" );   
  43.     
  44.        dataset.addValue( 400 "广州" "香蕉" );   
  45.     
  46.        dataset.addValue( 500 "北京" "荔枝" );   
  47.     
  48.        dataset.addValue( 500 "上海" "荔枝" );   
  49.     
  50.        dataset.addValue( 500 "广州" "荔枝" );   
  51.         //创建主题样式   
  52.        StandardChartTheme standardChartTheme= new  StandardChartTheme( "CN" );   
  53.         //设置标题字体   
  54.        standardChartTheme.setExtraLargeFont( new  Font( "隶书" ,Font.BOLD, 20 ));   
  55.         //设置图例的字体   
  56.        standardChartTheme.setRegularFont( new  Font( "宋书" ,Font.PLAIN, 15 ));   
  57.         //设置轴向的字体   
  58.        standardChartTheme.setLargeFont( new  Font( "宋书" ,Font.PLAIN, 15 ));   
  59.         //应用主题样式   
  60.        ChartFactory.setChartTheme(standardChartTheme);   
  61.     
  62.         JFreeChart chart=ChartFactory.createBarChart3D( "水果产量图" "水果" "水果" , dataset, PlotOrientation.VERTICAL,  true true true );   
  63. //        TextTitle textTitle = chart.getTitle();   
  64. //      textTitle.setFont(new Font("宋体", Font.BOLD, 20));   
  65. //      LegendTitle legend = chart.getLegend();   
  66. //      if (legend != null) {   
  67. //          legend.setItemFont(new Font("宋体", Font.BOLD, 20));   
  68. //      }   
  69.        ChartFrame  frame= new  ChartFrame ( "水果产量图 " ,chart, true );   
  70.     
  71.        frame.pack();   
  72.     
  73.        frame.setVisible( true );   
  74.     
  75.     }   
  76.     
  77.   
  78. }  
package com.zzs.jfreechart.demo;

import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;

public class JfreeChartTest {
	 
    public static void main(String[] args) {
 
//     创建类别图(Category)数据对象
 
       DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 
       dataset.addValue(100, "北京", "苹果");
 
       dataset.addValue(100, "上海", "苹果");
 
       dataset.addValue(100, "广州", "苹果");
 
       dataset.addValue(200, "北京", "梨子");
 
       dataset.addValue(200, "上海", "梨子");
 
       dataset.addValue(200, "广州", "梨子");
 
       dataset.addValue(300, "北京", "葡萄");
 
       dataset.addValue(300, "上海", "葡萄");
 
       dataset.addValue(300, "广州", "葡萄");
 
       dataset.addValue(400, "北京", "香蕉");
 
       dataset.addValue(400, "上海", "香蕉");
 
       dataset.addValue(400, "广州", "香蕉");
 
       dataset.addValue(500, "北京", "荔枝");
 
       dataset.addValue(500, "上海", "荔枝");
 
       dataset.addValue(500, "广州", "荔枝");
       //创建主题样式
       StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
       //设置标题字体
       standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));
       //设置图例的字体
       standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));
       //设置轴向的字体
       standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));
       //应用主题样式
       ChartFactory.setChartTheme(standardChartTheme);
 
        JFreeChart chart=ChartFactory.createBarChart3D("水果产量图", "水果", "水果", dataset, PlotOrientation.VERTICAL, true, true, true);
//        TextTitle textTitle = chart.getTitle();
// 		textTitle.setFont(new Font("宋体", Font.BOLD, 20));
// 		LegendTitle legend = chart.getLegend();
// 		if (legend != null) {
// 			legend.setItemFont(new Font("宋体", Font.BOLD, 20));
// 		}
       ChartFrame  frame=new ChartFrame ("水果产量图 ",chart,true);
 
       frame.pack();
 
       frame.setVisible(true);
 
    }
 

}



二、制定乱码文字的字体  
 使用JFreeChart绘制图表的时候,如果使用默认的字体会导致图标中的汉字显示为乱码。解决方法如下:

JFreeChart是用户使用该库提供的各类图标的统一接口,JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。三个部分设置字体的方法分别如下:

1.Title

TextTitle textTitle = freeChart.getTitle();  
textTitle.setFont(new Font("宋体",Font.BOLD,20)); 


2.Legent

LegendTitle legend = freeChart.getLegend();  
if (legend!=null) {  
   legend.setItemFont(new Font("宋体", Font.BOLD, 20));



3.Plot



    对于不同类型的图表对应Plot的不同的实现类,设置字体的方法也不完全相同。

    对于使用CategoryPlot的图表(如柱状图):

CategoryPlot plot = (CategoryPlot)freeChart.getPlot();  
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)  
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴坐标上的字体  
domainAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴上的标题的字体    
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)  
valueAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的字体  
valueAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的标题的字体 
CategoryPlot plot = (CategoryPlot)freeChart.getPlot();
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴坐标上的字体
domainAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴上的标题的字体
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)
valueAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的字体
valueAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的标题的字体


对于使用PiePlot的图标(如饼状图):


PiePlot plot = (PiePlot)freeChart.getPlot();  
plot.setLabelFont(new Font("宋体",Font.BOLD,15)); 



对于使用PiePlot的图标(如饼状图):


view plaincopy to clipboardprint?
PiePlot plot = (PiePlot)freeChart.getPlot();  
plot.setLabelFont(new Font("宋体",Font.BOLD,15)); 

下面一个实例:

Java代码 复制代码  收藏代码
  1. package  com.zzs.jfreechart.demo;   
  2.   
  3. import  java.awt.Font;   
  4.   
  5. import  javax.swing.JPanel;   
  6.   
  7. import  org.jfree.chart.ChartFactory;   
  8. import  org.jfree.chart.ChartPanel;   
  9. import  org.jfree.chart.JFreeChart;   
  10. import  org.jfree.chart.plot.PiePlot;   
  11. import  org.jfree.chart.title.LegendTitle;   
  12. import  org.jfree.chart.title.TextTitle;   
  13. import  org.jfree.data.general.DefaultPieDataset;   
  14. import  org.jfree.data.general.PieDataset;   
  15. import  org.jfree.ui.ApplicationFrame;   
  16.   
  17. public   class  JfreeChartOne  extends  ApplicationFrame {   
  18.   
  19.      private   static   final   long  serialVersionUID = 1L;   
  20.   
  21.      public  JfreeChartOne(String s)   
  22.   
  23.     {   
  24.   
  25.          super (s);   
  26.   
  27.         setContentPane(createJPanel());   
  28.   
  29.     }   
  30.   
  31.      public   static   void  main(String[] args) {   
  32.   
  33.         JfreeChartOne one =  new  JfreeChartOne( "CityInfoPort公司组织架构图" );   
  34.   
  35.         one.pack();   
  36.   
  37.         one.setVisible( true );   
  38.   
  39.     }   
  40.   
  41.      // 利用静态方法设定数据源(饼状图)   
  42.   
  43.      public   static  PieDataset createPieDataset() {   
  44.   
  45.         DefaultPieDataset defaultpiedataset =  new  DefaultPieDataset();   
  46.   
  47.         defaultpiedataset.setValue( "管理人员" 10 .02D);   
  48.   
  49.         defaultpiedataset.setValue( "市场人员" 20 .23D);   
  50.   
  51.         defaultpiedataset.setValue( "开发人员" 60 .02D);   
  52.   
  53.         defaultpiedataset.setValue( "OEM人员" 10 .02D);   
  54.   
  55.         defaultpiedataset.setValue( "其他人员" 5 .11D);   
  56.   
  57.          return  defaultpiedataset;   
  58.   
  59.     }   
  60.   
  61.      // 通过ChartFactory创建JFreeChart的实例   
  62.   
  63.      public   static  JFreeChart createJFreeChart(PieDataset p)   
  64.   
  65.     {   
  66.   
  67.         JFreeChart a = ChartFactory.createPieChart( "CityInfoPort公司组织架构图" , p,   
  68.                  true true true );   
  69.          // JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。   
  70.          //三个部分设置字体的方法分别如下:   
  71.         TextTitle textTitle = a.getTitle();   
  72.         textTitle.setFont( new  Font( "宋体" , Font.BOLD,  20 ));   
  73.         LegendTitle legend = a.getLegend();   
  74.          if  (legend !=  null ) {   
  75.             legend.setItemFont( new  Font( "宋体" , Font.BOLD,  20 ));   
  76.         }   
  77.   
  78.         PiePlot pie = (PiePlot) a.getPlot();   
  79.   
  80.         pie.setLabelFont( new  Font( "宋体" , Font.BOLD,  12 ));   
  81.   
  82.         pie.setNoDataMessage( "No data available" );   
  83.   
  84.         pie.setCircular( true );   
  85.   
  86.         pie.setLabelGap( 0 .01D); // 间距   
  87.   
  88.          return  a;   
  89.   
  90.     }   
  91.   
  92.      public   static  JPanel createJPanel() {   
  93.   
  94.         JFreeChart jfreechart = createJFreeChart(createPieDataset());   
  95.   
  96.          return   new  ChartPanel(jfreechart);   
  97.   
  98.     }   
  99.   
  100. }  
package com.zzs.jfreechart.demo;

import java.awt.Font;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;

public class JfreeChartOne extends ApplicationFrame {

	private static final long serialVersionUID = 1L;

	public JfreeChartOne(String s)

	{

		super(s);

		setContentPane(createJPanel());

	}

	public static void main(String[] args) {

		JfreeChartOne one = new JfreeChartOne("CityInfoPort公司组织架构图");

		one.pack();

		one.setVisible(true);

	}

	// 利用静态方法设定数据源(饼状图)

	public static PieDataset createPieDataset() {

		DefaultPieDataset defaultpiedataset = new DefaultPieDataset();

		defaultpiedataset.setValue("管理人员", 10.02D);

		defaultpiedataset.setValue("市场人员", 20.23D);

		defaultpiedataset.setValue("开发人员", 60.02D);

		defaultpiedataset.setValue("OEM人员", 10.02D);

		defaultpiedataset.setValue("其他人员", 5.11D);

		return defaultpiedataset;

	}

	// 通过ChartFactory创建JFreeChart的实例

	public static JFreeChart createJFreeChart(PieDataset p)

	{

		JFreeChart a = ChartFactory.createPieChart("CityInfoPort公司组织架构图", p,
				true, true, true);
		// JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。
		//三个部分设置字体的方法分别如下:
		TextTitle textTitle = a.getTitle();
		textTitle.setFont(new Font("宋体", Font.BOLD, 20));
		LegendTitle legend = a.getLegend();
		if (legend != null) {
			legend.setItemFont(new Font("宋体", Font.BOLD, 20));
		}

		PiePlot pie = (PiePlot) a.getPlot();

		pie.setLabelFont(new Font("宋体", Font.BOLD, 12));

		pie.setNoDataMessage("No data available");

		pie.setCircular(true);

		pie.setLabelGap(0.01D);// 间距

		return a;

	}

	public static JPanel createJPanel() {

		JFreeChart jfreechart = createJFreeChart(createPieDataset());

		return new ChartPanel(jfreechart);

	}

}


下面这个修改坐标轴:

Java代码 复制代码  收藏代码
  1. package  com.zzs.jfreechart.demo;   
  2.   
  3. import  java.awt.Color;   
  4. import  java.awt.Font;   
  5.   
  6. import  org.jfree.chart.ChartFactory;   
  7. import  org.jfree.chart.ChartFrame;   
  8. import  org.jfree.chart.JFreeChart;   
  9. import  org.jfree.chart.axis.CategoryAxis;   
  10. import  org.jfree.chart.axis.ValueAxis;   
  11. import  org.jfree.chart.plot.XYPlot;   
  12. import  org.jfree.chart.title.LegendTitle;   
  13. import  org.jfree.chart.title.TextTitle;   
  14. import  org.jfree.data.time.Month;   
  15. import  org.jfree.data.time.TimeSeries;   
  16. import  org.jfree.data.time.TimeSeriesCollection;   
  17. import  org.jfree.ui.RectangleInsets;   
  18.   
  19. public   class  ShiJianXuLieTu01 {   
  20.   
  21.      /**  
  22.      * @param args  
  23.      */   
  24.      public   static   void  main(String[] args) {   
  25.          // TODO Auto-generated method stub   
  26.          //时间序列图   
  27.             
  28.            TimeSeries timeseries =  new  TimeSeries( "L&G European Index Trust" ,Month. class );   
  29.         
  30.            timeseries.add( new  Month( 2 2001 ),  181 .8D); //这里用的是Month.class,同样还有Day.class Year.class 等等   
  31.         
  32.            timeseries.add( new  Month( 3 2001 ),  167 .3D);   
  33.         
  34.            timeseries.add( new  Month( 4 2001 ),  153 .8D);   
  35.         
  36.            timeseries.add( new  Month( 5 2001 ),  167 .6D);   
  37.         
  38.            timeseries.add( new  Month( 6 2001 ),  158 .8D);   
  39.         
  40.            timeseries.add( new  Month( 7 2001 ),  148 .3D);   
  41.         
  42.            timeseries.add( new  Month( 8 2001 ),  153 .9D);   
  43.         
  44.            timeseries.add( new  Month( 9 2001 ),  142 .7D);   
  45.         
  46.            timeseries.add( new  Month( 10 2001 ),  123 .2D);   
  47.         
  48.            timeseries.add( new  Month( 11 2001 ),  131 .8D);   
  49.         
  50.            timeseries.add( new  Month( 12 2001 ),  139 .6D);   
  51.         
  52.            timeseries.add( new  Month( 1 2002 ),  142 .9D);   
  53.         
  54.            timeseries.add( new  Month( 2 2002 ),  138 .7D);   
  55.         
  56.            timeseries.add( new  Month( 3 2002 ),  137 .3D);   
  57.         
  58.            timeseries.add( new  Month( 4 2002 ),  143 .9D);   
  59.         
  60.            timeseries.add( new  Month( 5 2002 ),  139 .8D);   
  61.         
  62.            timeseries.add( new  Month( 6 2002 ), 137D);   
  63.         
  64.            timeseries.add( new  Month( 7 2002 ),  132 .8D);   
  65.         
  66.         
  67.         
  68.            TimeSeries timeseries1 =  new  TimeSeries( "L&G UK Index Trust曾召帅" ,Month. class );   
  69.         
  70.            timeseries1.add( new  Month( 2 2001 ),  129 .6D);   
  71.         
  72.            timeseries1.add( new  Month( 3 2001 ),  123 .2D);   
  73.         
  74.            timeseries1.add( new  Month( 4 2001 ),  117 .2D);   
  75.         
  76.            timeseries1.add( new  Month( 5 2001 ),  124 .1D);   
  77.         
  78.            timeseries1.add( new  Month( 6 2001 ),  122 .6D);   
  79.         
  80.            timeseries1.add( new  Month( 7 2001 ),  119 .2D);   
  81.         
  82.            timeseries1.add( new  Month( 8 2001 ),  116 .5D);   
  83.         
  84.            timeseries1.add( new  Month( 9 2001 ),  112 .7D);   
  85.         
  86.            timeseries1.add( new  Month( 10 2001 ),  101 .5D);   
  87.         
  88.            timeseries1.add( new  Month( 11 2001 ),  106 .1D);   
  89.         
  90.            timeseries1.add( new  Month( 12 2001 ),  110 .3D);   
  91.         
  92.            timeseries1.add( new  Month( 1 2002 ),  111 .7D);   
  93.         
  94.            timeseries1.add( new  Month( 2 2002 ), 111D);   
  95.         
  96.            timeseries1.add( new  Month( 3 2002 ),  109 .6D);   
  97.         
  98.            timeseries1.add( new  Month( 4 2002 ),  113 .2D);   
  99.         
  100.            timeseries1.add( new  Month( 5 2002 ),  111 .6D);   
  101.         
  102.            timeseries1.add( new  Month( 6 2002 ),  108 .8D);   
  103.         
  104.            timeseries1.add( new  Month( 7 2002 ),  101 .6D);   
  105.         
  106.            TimeSeriesCollection timeseriescollection =  new  TimeSeriesCollection();   
  107.         
  108.            timeseriescollection.addSeries(timeseries);   
  109.         
  110.             timeseriescollection.addSeries(timeseries1);   
  111.         
  112.            timeseriescollection.setDomainIsPointsInTime( true );  //domain轴上的刻度点代表的是时间点而不是时间段   
  113.         
  114.            JFreeChart jfreechart = ChartFactory.createTimeSeriesChart( "合法 & General Unit Trust Prices" ,   
  115.         
  116.                    "日期" ,   
  117.         
  118.                    "暗示的话发神经提防" ,   
  119.         
  120.                   timeseriescollection,   
  121.         
  122.                    true ,   
  123.         
  124.                    true ,   
  125.         
  126.                    false );   
  127.         
  128.                   jfreechart.setBackgroundPaint(Color.white);   
  129.                   TextTitle textTitle = jfreechart.getTitle();   
  130.                 textTitle.setFont( new  Font( "宋体" , Font.BOLD,  20 ));   
  131.                 LegendTitle legend = jfreechart.getLegend();   
  132.                  if  (legend !=  null ) {   
  133.                     legend.setItemFont( new  Font( "宋体" , Font.BOLD,  20 ));   
  134.                 }   
  135.         
  136.                   XYPlot xyplot = (XYPlot)jfreechart.getPlot();  //获得 plot : XYPlot!!   
  137.                   ValueAxis domainAxis=xyplot.getDomainAxis();   
  138.                   domainAxis.setTickLabelFont( new  Font( "宋体" ,Font.BOLD, 20 )); //设置x轴坐标上的字体   
  139.                   domainAxis.setLabelFont( new  Font( "宋体" ,Font.BOLD, 20 )); //设置x轴坐标上的标题的字体   
  140.                      
  141.                   ValueAxis rangeAxis=xyplot.getRangeAxis();   
  142.                   rangeAxis.setTickLabelFont( new  Font( "宋体" ,Font.BOLD, 20 )); //设置y轴坐标上的字体   
  143.                   rangeAxis.setLabelFont( new  Font( "宋体" ,Font.BOLD, 20 )); //设置y轴坐标上的标题的字体   
  144.         
  145.                   xyplot.setBackgroundPaint(Color.lightGray);   
  146.         
  147.                   xyplot.setDomainGridlinePaint(Color.white);   
  148.         
  149.                   xyplot.setRangeGridlinePaint(Color.white);   
  150.         
  151.                   xyplot.setAxisOffset( new  RectangleInsets(5D, 5D, 5D, 5D));   
  152.         
  153.                   xyplot.setDomainCrosshairVisible( true );   
  154.         
  155.                   xyplot.setRangeCrosshairVisible( true );   
  156.         
  157.                   ChartFrame  frame= new  ChartFrame ( "折线图 " ,jfreechart, true );   
  158.         
  159.                   frame.pack();   
  160.         
  161.                   frame.setVisible( true );   
  162.   
  163.   
  164.   
  165.     }   
  166.   
  167. }  
分享到:
评论

相关推荐

    解决jfreechart中文乱码方案整理.doc

    因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...

    JFreeChart乱码解决.doc

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,...如果你遇到的特定问题仍未解决,可以搜索相关的解决方案,或者参考社区中的帖子,如文中提到的博客文章,那里通常会汇总各种场景下的解决方案。

    区块链_智能合约_Solidity_保险应用_基于以太坊的技_1744433266.zip

    区块链_智能合约_Solidity_保险应用_基于以太坊的技_1744433266

    【数据库管理】Mysql安装配置全流程:环境变量设置、服务安装与初始密码修改教程

    内容概要:本文档详细介绍了在Windows系统上安装MySQL数据库的具体步骤。首先,需要配置系统环境变量,包括新建MYSQL_HOME变量并将其添加到PATH中;其次,创建并编辑my.ini配置文件,设置MySQL的基本参数如端口、字符集、数据存放目录等;接着,在命令行工具中通过一系列指令完成MySQL的初始化、服务安装、启动以及root用户的密码设置和权限调整。整个流程涵盖了从环境搭建到最终确保MySQL服务正常运行的所有关键环节。 适合人群:适用于有一定计算机操作基础,尤其是对数据库管理有一定兴趣或需求的技术人员。 使用场景及目标:①帮助用户在本地机器上成功部署MySQL数据库环境;②确保用户能够掌握MySQL的基本配置与管理技能,如环境变量配置、服务安装与卸载、用户权限管理等。 其他说明:在安装过程中可能会遇到一些常见问题,例如由于之前版本残留导致的服务安装失败,此时可以通过命令行删除旧服务(sc delete mysql)来解决。此外,为了保证安全性,务必及时修改root用户的初始密码。

    【嵌入式系统】8051单片机启动文件STARTUP.A51代码解析:初始化堆栈指针与数据段及中断向量配置详解

    内容概要:`STARTUP.A51` 是 Keil C51 编译器自带的启动文件,用于初始化 8051 单片机的硬件和软件环境。该文件主要完成三个任务:初始化堆栈指针、清零内部数据存储器、跳转到主程序。文件中定义了内存模式(如 SMALL),并设置了堆栈指针的初始值为 0x60。接着通过循环将内部数据存储器的所有字节清零,确保程序开始时数据存储器的状态是确定的。此外,文件还列出了 8051 单片机的各个中断向量地址,并为每个中断提供占位符,实际的中断处理程序需要在其他文件中实现。最后,启动代码段初始化堆栈指针和数据段后,跳转到 `MAIN` 函数开始执行主程序。; 适合人群:对嵌入式系统开发有一定了解,尤其是使用 8051 单片机的开发者。; 使用场景及目标:①理解 8051 单片机启动文件的工作原理;②掌握如何初始化堆栈指针和数据段;③熟悉中断向量表的设置及其作用。; 其他说明:此文件为程序正常运行提供了必要的初始化操作,开发者可以根据具体需求修改该文件以适应不同的硬件和软件环境。

    【电力系统故障诊断】基于行波理论的输电线路故障诊断方法研究:三相电流信号分析与小波变换波头检测系统设计(含详细代码及解释)

    内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。

    光伏-混合储能微电网能量管理系统:基于滤波算法的功率分配与SOC优化

    内容概要:本文详细介绍了光伏-混合储能微电网能量管理系统的模型架构及其控制策略。首先探讨了光伏发电模块中的MPPT(最大功率点跟踪)控制,采用扰动观察法和改进型变步长策略来提高光伏板的发电效率。接着重点讲解了混合储能系统的功率分配,利用一阶低通滤波算法将功率需求分为低频和高频两部分,分别由蓄电池和超级电容处理。此外,文中还深入讨论了SOC(荷电状态)管理策略,确保电池和超级电容在不同工作状态下保持最佳性能。仿真结果显示,在光伏出力剧烈波动的情况下,系统能够有效地维持稳定的电压水平,并显著提高了储能设备的使用寿命。 适合人群:对光伏微电网、储能技术和能量管理系统感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于研究和开发高效、可靠的光伏-混合储能微电网系统,旨在优化能量管理和提高系统稳定性。具体应用场景包括但不限于家庭光伏系统、小型微电网以及工业能源管理系统。 其他说明:文中提供了详细的代码实现和仿真结果,便于读者理解和复现实验。同时,模型设计采用了模块化思路,方便进行个性化修改和扩展。

    MATLAB与CVX平台下储能调峰调频联合优化模型的实现与应用

    内容概要:本文详细介绍了基于MATLAB和CVX平台实现的储能调峰调频联合优化模型。该模型不仅涵盖了储能的基本参数设定、负荷不确定性处理、充放电策略制定,还包括了调峰调频的联合调度、功率约束处理、鲁棒优化等方面的内容。通过构建考虑电池退化成本、充放电功率约束以及用户负荷不确定性的储能优化模型,展现了储能系统在电力系统中的高效协同工作。文中提供了详细的代码示例,解释了各个部分的功能和实现方法,强调了模型的深度与创新性。 适合人群:适用于具有一定编程基础和技术背景的研究人员、工程师以及希望深入了解储能系统优化的学生。 使用场景及目标:该模型主要用于电力系统中储能设备的优化调度,旨在提高储能系统的经济效益和社会效益。通过联合调峰调频,能够显著提升储能系统的收益,实现1+1>2的超线性增益效果。此外,该模型还可以用于教学和科研,帮助初学者理解和掌握储能优化的相关技术和理论。 其他说明:代码中包含了丰富的注释和模块化的子程序,使得整个模型易于理解和扩展。对于有经验的开发者,可以在现有基础上进一步改进和定制,以适应不同的应用场景。

    大模型技术白皮书2023版

    大模型技术白皮书2023版

    图像增广 PyTorch 版

    图像增广 PyTorch 版

    批量修改文件常用格式有TXT D0CX PDF 等办公软件里面附带使用教程

    批量修改文件名可以帮助用户节省大量时间,提高工作效率 里面附带使用教程

    《计算机应用基础》第2章--Windows-XP操作系统.ppt

    《计算机应用基础》第2章--Windows-XP操作系统.ppt

    基于单片机的红外密码锁设计(仿真+电路+程序)(51+1602+1838+24C02+JK+BZ+KEY16)#0407

    包括:源程序工程文件、Proteus仿真工程文件、电路原理图文件、配套技术手册、论文资料等 1、采用51/52单片机(通用)作为主控芯片; 2、采用1602液晶显示使用过程及状态,液晶屏亮度会随光线自动调整; 3、按键输入6位密码,输入密码正确则锁打开,显示open!输入密码错误次数超过3次,蜂鸣器报警并且锁定键盘; 4、密码可以自己修改,必须是锁打开时才能改密,为防止误操作,修改密码得输入两次; 5、采用24C02保存密码,掉电不丢失; 6、可通过红外遥控器输入密码操作锁的状态;

    2025年感知技术十大趋势深度分析报告总结述

    内容概要:本文深入剖析了2025年全球感知技术的十大发展趋势,涵盖多模态感知融合、3D感知与空间计算、脑机接口中的感知反馈技术、5G/6G赋能的超低延迟感知、语音与情感识别的高级化、生物感知与数字健康、环境感知与自适应智能、增强现实(AR)与触觉反馈技术、气味与化学感知、量子感知与极端条件测量。文章详细介绍了每项技术的技术原理、关键算法、实现方式、商业案例及未来前景,强调了感知技术在智慧城市、自动驾驶、智慧医疗、工业自动化等领域的深刻影响。报告指出,感知技术正从单一传感模式向多模态融合、从二维数据向三维空间重建、从传统网络通信向超低延迟和高可靠性网络升级,实现全场景、全维度的智能感知。; 适合人群:对感知技术感兴趣的科技爱好者、研究人员、决策者、企业管理层和投资人。; 使用场景及目标:①了解感知技术的最新进展和未来发展方向;②为技术研究提供全面、深入的参考;③为商业应用提供具体的案例和前景分析;④推动跨领域协同创新,构建开放共赢的产业生态。; 其他说明:报告基于近年来技术研发的最新进展、业界前沿的技术路线以及各大科技企业在商业落地方面的丰富实践。随着感知技术的不断成熟,数据隐私与安全保护问题也需高度重视,以确保技术进步与社会伦理和谐统一。未来,感知技术将成为推动社会进步和产业升级的重要力量,为实现万物互联、智慧决策和智能体验提供无限可能。

    基于Springboot+vue的校园新闻网站【源码+数据库+参考论文】

    本论文主要论述了如何使用JAVA语言开发一个校园新闻网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述校园新闻网站的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 校园新闻网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、新闻类型管理、校园新闻管理、留言板管理、论坛交流、系统管理,用户前台:首页、校园新闻、论坛交流、留言反馈、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个校园新闻网站信息管理的过程得以实现。 本系统的使用可以实现本校园新闻网站管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。 基于Springboot+vue的校园新闻网站【源码+数据库+参考论文】 感兴趣自行下载学习!

    电力电子领域三相三电平PWM整流器的三电平SVPWM算法闭环控制策略解析

    内容概要:本文详细探讨了三相三电平PWM整流器的闭环控制策略及其核心技术——三电平SVPWM算法。文章首先介绍了三相三电平PWM整流器的基本概念和优势,如输出三种电平以降低谐波含量并减少滤波器体积和成本。接着阐述了闭环控制策略的重要性,强调了电压外环和电流内环的双闭环控制机制。随后,文章深入讲解了三电平SVPWM算法的工作原理,包括空间电压矢量的选择、扇区判断、矢量作用时间和死区补偿等关键技术环节。此外,还讨论了中点电位平衡的问题以及PI参数的整定方法。最后,通过示波器测试验证了系统的性能指标,如THD低于3%,直流电压纹波小于1%。 适合人群:从事电力电子领域的工程师和技术人员,尤其是对三相三电平PWM整流器及其控制策略感兴趣的读者。 使用场景及目标:适用于高压大功率场合,旨在提高整流器的性能,降低谐波含量,实现单位功率因数运行。通过合理设计闭环控制策略和优化SVPWM算法,确保整流器在各种工况下都能稳定、高效地工作。 其他说明:文中提供了大量MATLAB和C语言代码片段,帮助读者更好地理解和实现相关算法。同时,针对实际调试过程中遇到的问题给出了实用的解决方案,如中点电位平衡和死区补偿等。

    全新红娘本地交友系统定制版源码 相亲婚恋交友小程序源码.zip

    全新红娘本地交友系统定制版源码 相亲婚恋交友小程序源码

    【地图制图领域】基于DeepSeek的地图生成技术探索:融合AI与传统制图链的智能化地图生成系统设计了在AI时代

    内容概要:文章探讨了AI技术,特别是DeepSeek,如何驱动地图生成的变革。首先介绍了地图制图在AI时代的背景与挑战,强调了DeepSeek与地图融合的两种主要方式:嵌入地图制图链和研发地图语言自身的预训练模型。随后详细描述了DeepSeek在地图生成中的具体应用,包括智能化地图生成器DoMapAI的整体框架,地图制图链中的知识图谱推理路径,以及地图语言的Token化过程。最后,文章总结了AI时代地图制图的职业变化和技术变革,指出地图制图正经历“大变局”。 适合人群:从事地图制图及相关领域的研究人员、工程师,以及对AI与地图生成感兴趣的学者。 使用场景及目标:①理解AI技术在地图生成中的应用,特别是DeepSeek的作用;②掌握智能化地图生成器DoMapAI的工作原理及其应用场景;③学习地图语言Token化的方法及其在地图生成中的应用;④探索AI时代地图制图的职业发展方向和技术变革。 阅读建议:本文内容较为专业,建议读者先了解基本的AI技术和地图制图知识。重点关注DeepSeek与地图融合的具体方法和应用场景,理解智能化地图生成器DoMapAI的工作流程,以及地图语言Token化的实现过程。在阅读过程中,可以结合实际案例进行思考,以更好地理解AI技术对地图制图的影响。

    chromedriver-mac-arm64-135.0.7049.114.zip

    chromedriver-mac-arm64-135.0.7049.114.zip

Global site tag (gtag.js) - Google Analytics