精华内容
下载资源
问答
  • java绘制曲线图

    万次阅读 2015-05-27 10:03:26
    JFreeChart chart = ChartFactory.createLineChart("历史记录曲线", //折线名称 "时间", // 横坐标名称 "倾角(X轴、Y轴)", // 纵坐标名称 linedataset, // 数据 PlotOrientation.VERTICAL, // 水平显示图像...
    import javax.swing.JPanel;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
    public class JFramechart extends ApplicationFrame {
    /**
      * 
      */
    private static final long serialVersionUID = 1L;
    public JFramechart(String s) {
       super(s);
       setContentPane(createDemoLine());
       this.pack();
       RefineryUtilities.centerFrameOnScreen(this);
       this.setVisible(true);
     // this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     }
    //public static void main(String[] args) {
    //   JFramechart fjc = new JFramechart("折线图",);
    //   fjc.pack();
    //   RefineryUtilities.centerFrameOnScreen(fjc);
    //   fjc.setVisible(true);
    //  // fjc.setDefaultCloseOperation(HIDE_ON_CLOSE);
    //   }
    // 生成显示图表的面板
     public static JPanel createDemoLine() {
       JFreeChart jfreechart = createChart(createDataset());
       return new ChartPanel(jfreechart);
     }
    // 生成图表主对象JFreeChart
     public static JFreeChart createChart(DefaultCategoryDataset linedataset) {
       // 定义图表对象
       JFreeChart chart = ChartFactory.createLineChart("历史记录曲线", //折线图名称
         "时间", // 横坐标名称
         "倾角(X轴、Y轴)", // 纵坐标名称
         linedataset, // 数据
        PlotOrientation.VERTICAL, // 水平显示图像
         true, // include legend
         true, // tooltips
         false // urls
         );
       CategoryPlot plot = chart.getCategoryPlot();
       plot.setRangeGridlinesVisible(true); //是否显示格子线
       plot.setBackgroundAlpha(0.3f); //设置背景透明度
       NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();
       rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
       rangeAxis.setAutoRangeIncludesZero(true);
       rangeAxis.setUpperMargin(0.20);
       rangeAxis.setLabelAngle(Math.PI / 2.0);
       return chart;
     }
    // 生成数据
     public static DefaultCategoryDataset createDataset() {
       DefaultCategoryDataset linedataset = new DefaultCategoryDataset();
       MyData md=new MyData();
       double x=md.getX();
       double y=md.getX();
       double t=md.getX();
       draw(x,y,t,linedataset);
       return linedataset;
     }
     public static DefaultCategoryDataset draw(double x,double y,double t,DefaultCategoryDataset linedataset){
    	 DefaultCategoryDataset lds = new DefaultCategoryDataset();
    	 String series1 = "倾角(X轴)";
    	   String series2 = "倾角(Y轴)";
    	   String series3 = "温度";
    	   // 横轴名称(列名称)
    	   String type1 = "1月";
    	   String type2 = "2月";
    	   String type3 = "3月";
    	   String type4="4月";
    	 lds=linedataset;
    	 lds.addValue(4.2, series1, type1);
    	   linedataset.addValue(x, series1, type2);
    	   linedataset.addValue(5.2, series1, type3);
    	   linedataset.addValue(3.9, series1, type4);
    	   linedataset.addValue(y, series2, type1);
    	   linedataset.addValue(5.2, series2, type2);
    	   linedataset.addValue(7.9, series2, type3);
    	   linedataset.addValue(t, series3, type1);
    	   linedataset.addValue(9.2, series3, type2);
    	   linedataset.addValue(8.9, series3, type3);
    	 return linedataset;
     }
    }

    展开全文
  • Java生成曲线图

    2020-12-07 04:00:42
    Java 曲线图 jfreechart。 含jar包,直接运行,注释全。 Java 曲线图 jfreechart。 含jar包,直接运行,注释全。
  • 实现JSON传输数据并根据接收到的数据绘制曲线图

    JSON数据传输和接收 绘制曲线图 JDBC数据库查询

    目录

     

    编写JSON传输数据类

    实现java后端的JDBC数据库连接和查询

    封装需要传输的JSON数据并传输

    在前端把接收到的JSON转化为二维数组

    绘制曲线图 输出所查询的数据

    最终结果

    祝看到这里的你万事都如意~


    编写JSON传输数据类

    首先对于数据类型采用String类型来记录datetime,采用float类型来存储value。

    构造方法,其中get方法和set方法要对应方法名,否则java源码会报错。

     net.sf.json.JSONObject defaultBeanProcessing
    信息: Property 'xxx' of class servlet.dataInfo has no read method. SKIPPED 类似这样

    package servlet;
    
    public class dataInfo {
    	public String dateTime;
    	public float value;
    	public String getDateTime() {
    		return dateTime;
    	}
    	public float getValue() {
    		return value;
    	}
    	public dataInfo() {
    		
    	}
    	public dataInfo(String dateTime,float value) {
    		this.setDateTime(dateTime);
    		this.setValue(value);
    	}
    	public void setDateTime(String dateTime) {
    		this.dateTime=dateTime;
    	}
    	public void setValue(float value) {
    		this.value=value;
    	}
    	
    }

    实现java后端的JDBC数据库连接和查询

    首先需要在项目中导入mysql的jar包,获取方式可以在本地服务器的根目录下进行搜索即可。

    然后再右键项目-->构建路径-->配置构建路径-->添加外部jar包 即可。

    以下是数据库的连接和查询。

                    Connection con;//数据库连接
    		String driver = "com.mysql.jdbc.Driver";//驱动
    		String url = "jdbc:mysql://localhost:3306/project1?useUnicode=true&characterEncoding=utf-8&useSSL=false";
    		String user = "root";//数据库用户名
    		String password = "admin";//数据库密码
    		try {
    			Class.forName(driver);
    			con = DriverManager.getConnection(url,user,password);
    			if(!con.isClosed())
                     System.out.println("Succeeded connecting to the Database!");
    			Statement statement = con.createStatement();
    			String sql = "此处插入SQL-Query语句";
    			ResultSet rs = statement.executeQuery(sql);
    			while(rs.next()) {
                                //数据库查询内容读入
    			}
    			
    			rs.close();
    			con.close();//关闭连接
    		}catch(ClassNotFoundException e) {   //异常处理
    			System.out.println("Sorry,can`t find the Driver!");
    			e.printStackTrace();   
    			} catch(SQLException e) {
    			//数据库连接失败异常处理
    			e.printStackTrace();  
    			}catch (Exception e) {
    			 e.printStackTrace();
    		}finally{
    			System.out.println("数据库数据成功获取!!");
    			  }

    封装需要传输的JSON数据并传输

    在获取数据库数据的时候,应该采用getTimetamp方法获取数据,否则可能只会获得单纯的日期或者时间数据。

    值得注意的一点是:在list封装数据时,需要用SimpleDateFormat把日期时间格式化,将其转化为字符串类型的格式,否则日期时间格式松散化。

    比如下面这样:

    最后采用JSONArray.formObject把List里的数据转化为JSON数据,最后out.print到前端index.jsp页面。

                            Date time = null;
    			float value;
    			List<dataInfo> list=new ArrayList<dataInfo>();
    			while(rs.next()) {
    				time = rs.getTimestamp("sDateTime");
    				value = rs.getFloat("sValue");
    				SimpleDateFormat formattime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    				String pubtime=formattime.format(time);
    				dataInfo dataInfo=new dataInfo(pubtime,value);
    				list.add(dataInfo);
    			}
    			JSONArray ja=JSONArray.fromObject(list); 
    			out.print(ja);
    			System.out.println("array--->"+ja);

    在前端把接收到的JSON转化为二维数组

    由于绘制曲线图的函数所需要的data数据是一个二维数组,此时需要编写一个函数对接收到的JSON数据进行处理。

    function formatDoubleDimensional(arr){
    		  for (var i=0; i<arr.length; i++) {
    		      var tmpArr = []
    		      for (var attr in arr[i]) {
    		          tmpArr.push(arr[i][attr])
    		      }
    		      arr[i] = tmpArr
    		  }
    		  return arr
    		};//通过arr.length获取JSON数据的长度,再按列读入各个元组的数据。

    这样在ajax的函数中就可以直接调用该函数来对msg进行二维数组转换,获取到绘制曲线图所需要的二维数组。

    绘制曲线图 输出所查询的数据

    首先应该导入绘制曲线图所需要的jquery文件

    <script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>
    <script src="js/highcharts.js" type="text/javascript"></script>
    <script src="js/drawcharts.js" type="text/javascript"></script>

    然后是给出html格式定义,在主体部分添加一个盒子,用于显示绘制的曲线图。

    <!DOCTYPE html PUBLIC "-//W3C//DTD  XHTML  1.0  Transitional//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<title>温度传感器监控系统</title>
    	<meta charset="UTF-8" http-equiv="Content-Type" content="text/html">
    </head>
    <body>
        <div id="curve">
            
        </div>
    </body>
    </html>

    在ajax的success:函数中进行曲线函数的调用,当正确接收到数据后,才调用函数进行绘制曲线。

                      console.log(msg);//控制台输出数据
                      formatDoubleDimensional(msg);//把JSon转换为二维数组
                	  showChart('#curve','spline','',false,msg);//绘制曲线

    最终结果

    这里我们可以看到在控制台输出的是日期时间格式而不是时间戳格式,这就会影响到绘制图表的时候x轴不能显示时间的问题。

    这里我们在后端进行解决,把我们之前转换好的日期时间格式转化成时间戳格式,此时的时间戳是字符串,在前端我们应该把它转换为整型格式。

    String subtime=String.valueOf(formattime.parse(pubtime).getTime());
                    for(i in msg){
                    	  var m=msg[i];
                    	  msg[i].dateTime=parseInt(m.dateTime);           
                      }

    此时就完成了时间戳的转换,再次放进去绘制曲线函数就能得到相应的效果了。

    这是前端数据发送部分的内容,第二个链接是APP打包的内容。

    https://blog.csdn.net/weixin_44165203/article/details/106447038

    https://blog.csdn.net/weixin_44165203/article/details/106595332

    祝看到这里的你万事都如意~

    对这个项目开发所需要的所有的JQuery文件我都放在了资源链接里,不需要积分,有需要的朋友自取。谢谢你的点赞~!

    展开全文
  • Java绘制函数图像

    2015-10-31 17:27:49
    Java刚开始学习,根据JFrame和JPanel以及Math类编写的小程序,抛砖引玉
  • 此demo不需要借助其他插件,只需要加入poi相关的jar即可生成excel表格数据曲线,附件是源码
  • MPChartLib绘制曲线图

    千次阅读 2015-09-28 17:26:36
    关于android实现绘制曲线图或者折线图功能,有很多第三方架包,也可以自己画 ,不过不建议自己画,第一时间浪费掉了 ,第二性能还不一定好,既然有第三方的,为什么不直接使用第三方的呢? 刚开始我使用的是...
    关于android实现绘制曲线图或者折线图功能,有很多第三方架包,也可以自己画  ,不过不建议自己画,第一时间浪费掉了  ,第二性能还不一定好,既然有第三方的,为什么不直接使用第三方的呢?
    刚开始我使用的是achartengine 这个第三方架包 ,真的是不咋地啊  ,做出来给boss看 各种不行,也不知道怎么改了,没办法  只有换其他的 ,后来到网上去找找  实在找不到了  ,只有去问问其他做技术的了,他们给我推荐了这个MpChartLib,GitHub的地址为:  哈哈   这次集成更简单  而且boss一看就通过了,想想之前的那个真苦逼啊  , 好了  废话不多说了 ,老规矩,先看工程结构图:
    

    这里写图片描述

    代码真的很简单,就一个类这里写代码片

    package com.example.linedemo;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.WindowManager;
    import android.widget.ImageView;
    import android.widget.TextView;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import com.github.mikephil.charting.charts.CombinedChart;
    import com.github.mikephil.charting.charts.CombinedChart.DrawOrder;
    import com.github.mikephil.charting.components.XAxis;
    import com.github.mikephil.charting.components.XAxis.XAxisPosition;
    import com.github.mikephil.charting.components.YAxis;
    import com.github.mikephil.charting.data.BarData;
    import com.github.mikephil.charting.data.BarDataSet;
    import com.github.mikephil.charting.data.BarEntry;
    import com.github.mikephil.charting.data.BubbleData;
    import com.github.mikephil.charting.data.BubbleDataSet;
    import com.github.mikephil.charting.data.BubbleEntry;
    import com.github.mikephil.charting.data.CandleData;
    import com.github.mikephil.charting.data.CandleDataSet;
    import com.github.mikephil.charting.data.CandleEntry;
    import com.github.mikephil.charting.data.CombinedData;
    import com.github.mikephil.charting.data.Entry;
    import com.github.mikephil.charting.data.LineData;
    import com.github.mikephil.charting.data.LineDataSet;
    import com.github.mikephil.charting.data.ScatterData;
    import com.github.mikephil.charting.data.ScatterDataSet;
    import com.github.mikephil.charting.utils.ColorTemplate;
    import android.graphics.Color;
    
    public class chartView extends Activity implements OnClickListener {
        private Intent intent;
        private CombinedChart mChart;
        private final int itemcount = 12;
        private List<String> months = new ArrayList<String>();
        private List<Map<String, Object>> month = new ArrayList<Map<String, Object>>();
        private List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
        private String[] mTimes = new String[] { "00:00", "1:00", "2:00", "3:00",
                "4:00", "5:00", "6:00", "7:00", "8:00", "9:00", "10:00", "11:00",
                "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00",
                "19:00", "20:00", "21:00", "22:00", "23:00", };
        private int[] arrs = {10,15,12,22,43,25,19,30,32,15,8,26,19,34,44,20,15,5,35,24,16,28,43};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.chartview);
            ImageView backbtn = (ImageView) findViewById(R.id.backbtn);
            backbtn.setOnClickListener(this);
    
            intent = getIntent();
            TextView titleView = (TextView) findViewById(R.id.title_bar_name);
            titleView.setText(intent.getStringExtra("days") + "天坐姿曲线图");
            mChart = (CombinedChart) findViewById(R.id.chart1);
            mChart.setDescription("");
            mChart.setBackgroundColor(Color.WHITE);
            mChart.setDrawGridBackground(true);
            mChart.setDrawBarShadow(true);
            mChart.setMaxVisibleValueCount(100);
            mChart.getAxisRight().setEnabled(false);
    
            // draw bars behind lines
            mChart.setDrawOrder(new DrawOrder[] { DrawOrder.BAR, DrawOrder.BUBBLE,
                    DrawOrder.CANDLE, DrawOrder.LINE, DrawOrder.SCATTER });
    
            YAxis rightAxis = mChart.getAxisRight();
            rightAxis.setDrawGridLines(false);
    
            YAxis leftAxis = mChart.getAxisLeft();
            leftAxis.setDrawGridLines(false);
    
            XAxis xAxis = mChart.getXAxis();
            xAxis.setPosition(XAxisPosition.BOTTOM);
            Map<String, Object> map = null;
            for (int i = 0; i < mTimes.length; i++) {
                map = new HashMap<String, Object>();
                map.put("addDay",mTimes[i]);
                month.add(map);
            }
    
            Map<String, Object> dataMap = null;
            for (int i = 0; i < arrs.length; i ++) {
                dataMap = new HashMap<String, Object>();
                dataMap.put("learnCount", arrs[i]);
                data.add(dataMap);
            }
    
            // 横向显示的时间 12/3 12/4
            for (int index = 0; index < month.size(); index++) {
                Map<String, Object> cdata = month.get(index);
    
                months.add(cdata.get("addDay").toString());
            }
    
            CombinedData data = new CombinedData(months);
    
            data.setData(generateLineData());
            // data.setData(generateBarData());
            // //data.setData(generateBubbleData());
            // data.setData(generateScatterData());
            // data.setData(generateCandleData());
    
            mChart.setData(data);
            mChart.invalidate();
        }
    
        private LineData generateLineData() {
    
            LineData d = new LineData();
    
            ArrayList<Entry> entries = new ArrayList<Entry>();
            // 纵向显示的数据
            for (int index = 0; index < data.size(); index++) {
                Map<String, Object> cdata = data.get(index);
    
                entries.add(new Entry(Integer.parseInt(cdata.get("learnCount")
                        .toString()), index));
            }
    
            LineDataSet set = new LineDataSet(entries,
                    intent.getStringExtra("days") + "天坐姿曲线图");
            set.setColor(Color.rgb(40, 40, 40));
            set.setLineWidth(2.5f);
            set.setCircleColor(Color.rgb(40, 40, 40));
            set.setCircleSize(5f);
            set.setFillColor(Color.rgb(40, 40, 40));
            set.setDrawCubic(true);
            set.setDrawValues(true);
            set.setValueTextSize(10f);
            set.setValueTextColor(Color.rgb(40, 40, 40));
    
            set.setAxisDependency(YAxis.AxisDependency.LEFT);
    
            d.addDataSet(set);
    
            return d;
        }
    
        private BarData generateBarData() {
    
            BarData d = new BarData();
    
            ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
    
            for (int index = 0; index < itemcount; index++)
                entries.add(new BarEntry(getRandom(15, 30), index));
    
            BarDataSet set = new BarDataSet(entries, "Bar DataSet");
            set.setColor(Color.rgb(60, 220, 78));
            set.setValueTextColor(Color.rgb(60, 220, 78));
            set.setValueTextSize(10f);
            d.addDataSet(set);
    
            set.setAxisDependency(YAxis.AxisDependency.LEFT);
    
            return d;
        }
    
        protected ScatterData generateScatterData() {
    
            ScatterData d = new ScatterData();
    
            ArrayList<Entry> entries = new ArrayList<Entry>();
    
            for (int index = 0; index < itemcount; index++)
                entries.add(new Entry(getRandom(20, 15), index));
    
            ScatterDataSet set = new ScatterDataSet(entries, "Scatter DataSet");
            set.setColor(Color.GREEN);
            set.setScatterShapeSize(7.5f);
            set.setDrawValues(false);
            set.setValueTextSize(10f);
            d.addDataSet(set);
    
            return d;
        }
    
        protected CandleData generateCandleData() {
    
            CandleData d = new CandleData();
    
            ArrayList<CandleEntry> entries = new ArrayList<CandleEntry>();
    
            for (int index = 0; index < itemcount; index++)
                entries.add(new CandleEntry(index, 20f, 10f, 13f, 17f));
    
            CandleDataSet set = new CandleDataSet(entries, "Candle DataSet");
            set.setColor(Color.rgb(80, 80, 80));
            set.setBodySpace(0.3f);
            set.setValueTextSize(10f);
            set.setDrawValues(false);
            d.addDataSet(set);
    
            return d;
        }
    
        protected BubbleData generateBubbleData() {
    
            BubbleData bd = new BubbleData();
    
            ArrayList<BubbleEntry> entries = new ArrayList<BubbleEntry>();
    
            for (int index = 0; index < itemcount; index++) {
                float rnd = getRandom(20, 30);
                entries.add(new BubbleEntry(index, rnd, rnd));
            }
    
            BubbleDataSet set = new BubbleDataSet(entries, "Bubble DataSet");
            set.setColors(ColorTemplate.VORDIPLOM_COLORS);
            set.setValueTextSize(10f);
            set.setValueTextColor(Color.WHITE);
            set.setHighlightCircleWidth(1.5f);
            set.setDrawValues(true);
            bd.addDataSet(set);
    
            return bd;
        }
    
        private float getRandom(float range, float startsfrom) {
            return (float) (Math.random() * range) + startsfrom;
        }
    
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
    
        }
    }
    

    最后再来看下布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF"
        android:orientation="vertical" >
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="44dp"
            android:background="#67ade9"
            android:gravity="center_vertical" >
    
            <TextView
                android:id="@+id/title_bar_name"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                android:ellipsize="end"
                android:gravity="center"
                android:singleLine="true"
                android:text="坐姿曲线图"
                android:textColor="#ffffff"
                android:textSize="17dp" />
    
            <ImageView
                android:id="@+id/backbtn"
                android:layout_width="45dp"
                android:layout_height="40dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:src="@drawable/go_back" />
        </RelativeLayout>
    
        <com.github.mikephil.charting.charts.CombinedChart
            android:id="@+id/chart1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>

    最后看下运行后的效果图吧:
    这里写图片描述
    这里写图片描述

    Demo下载地址:点击下载

    展开全文
  • 从网上获得的资料,感觉很好,分享一下! 从网上获得的资料,感觉很好,分享一下! 从网上获得的资料,感觉很好,分享一下! 从网上获得的资料,感觉很好,分享一下!
  • java绘制波形

    千次阅读 2015-01-22 20:39:37
    转载自http://bbs.csdn.net/topics/390428219?page=1 ... import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import

    转载自http://bbs.csdn.net/topics/390428219?page=1

    package com.tur.demo;
    
    import javax.swing.*;
    import java.awt.*;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Random;
    
    class DataReceiver extends JPanel {
        private List<Integer> values;                      // 保存接收到的数据的容器.
        private static final int MAX_VALUE = 200;          // 接收到的数据的最大值.
        private static final int MAX_COUNT_OF_VALUES = 50; // 最多保存数据的个数.
    
        public DataReceiver() {
            values = Collections.synchronizedList(new ArrayList<Integer>());
    
            // 使用一个线程模拟产生数据.
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Random rand = new Random();
    
                    try {
                        while (true) {
                            addValue(rand.nextInt(MAX_VALUE)); // 产生一个数据,并模拟接收并放到容器里.
                            repaint();
                            Thread.sleep(100);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
    
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    
            int w = getWidth();
            int h = getHeight();
            int xDelta = w / MAX_COUNT_OF_VALUES;
            int length = values.size();
    
            for (int i = 0; i < length - 1; ++i) {
                g2d.drawLine(xDelta * (MAX_COUNT_OF_VALUES - length + i),h-normalizeValueForYAxis(values.get(i), h),
                        xDelta * (MAX_COUNT_OF_VALUES - length + i + 1),h-normalizeValueForYAxis(values.get(i + 1), h));
            }
        }
    
        /**
         * 接收到的数据放入内存.
         * @param value
         */
        private void addValue(int value) {
            // 循环的使用一个接收数据的空间.
            // 最好是实现一个循环数组,而不是偷懒的使用ArrayList.
            if (values.size() > MAX_COUNT_OF_VALUES) {
                values.remove(0);
            }
    
            values.add(value);
        }
    
        /**
         * 规一化y轴方向的值. 使得value在y轴的值为[0, height]之间.
         *
         * @param value
         * @param height
         * @return
         */
        private int normalizeValueForYAxis(int value, int height) {
            return (int) ((double) height / MAX_VALUE * value);
        }
    
        private static void createGuiAndShow() {
            JFrame frame = new JFrame("");
    
            frame.getContentPane().add(new DataReceiver());
    
            // Set frame's close operation and location in the screen.
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 400);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            createGuiAndShow();
        }
    }
    


    展开全文
  • Java二维坐标动态曲线图绘制

    万次阅读 多人点赞 2016-11-18 21:21:36
    将一串随机数输入到二维坐标轴中,不断...import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rendering...
  • 使用Java Graphics2D及相关类绘制复杂图形并输出图片文件到指定位置!
  • 繁花曲线java绘制

    千次阅读 2018-10-28 10:42:47
    为更好解决繁花曲线绘制问题,由java编写进行输出动点轨迹方程的具体坐标,形成繁花曲线,其基本思路为 第一步:求小圆圆心坐标 小圆圆心的公转轨迹是一个半径为 r1- r2 的圆,求小圆圆心坐标,相当于是求半径为 ...
  • java曲线

    2011-10-27 22:28:46
    java绘制曲线java绘制曲线java绘制曲线java绘制曲线java绘制曲线java绘制曲线
  • 在Android中绘制曲线图

    千次阅读 2011-12-09 14:24:26
    应用程序的开发过程中,经常会遇到和曲线图打交道的情况,相比自己写代码绘制,无疑的,使用一些美观高效的开源库是一个更好的选择。目前开源的曲线图绘制工作有很多,本文以achartengine为例,介绍在Android系统下...
  • 绘制希尔伯特曲线 Hilbert Curve
  • * 这是一个简单的函数显示工具,用户输入简单函数,程序自动画出函数图像,有着完整的注释,十分容易理解 * 支持常数e, sin, cos, tan, ln, ^, 加减乘除括号以及它们的复合运算 * 只能有一个变量,而且必须是x,...
  • java swing绘制正弦曲线

    2009-10-12 23:17:33
    一个用swing绘制sin曲线的小程序 供初学者借鉴借鉴
  • java生成曲线图

    千次阅读 2013-10-12 15:30:11
    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Polygon; import java.awt.image.BufferedImage; import java.io.File; import java.io.Fi...
  • // 设置点的大小(上显示的点的大小和图例中点的大小都会被设置) renderer.setXAxisMin(320); // 设置X轴的最小值 renderer.setXAxisMax(780); // 设置X轴的最大值 renderer.setYAxisMin(yStart); // 设置Y...
  • android 自定义View 动态绘制曲线图

    千次阅读 2014-12-12 16:46:21
    1、定义视图类: ...import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.graphics.Canvas; import
  • 绝对高级应用,能够适应各种环境各种...开源的FlashChart2的应用,并且结合最新支持的Json配置,可以灵活显示数据为曲线图,柱状图,折线图,饼图等。绝对适合项目应用。该代码要在应用发布后使用,例子是java语言的。
  • Java绘制不规则图形的源代码,类似于一个Java小画板,可以画出一些基于线条的图形,比如曲线,直线,还可用来写字,示例截图如上所示。以下是相关源代码:  protected void processMouseEvent(MouseEvent e) { //...
  • 摘要:Java源码,图形操作,画线 Java虚线与实线,利用JAVA绘制2D图形、设置绘制线条的颜色,可以绘制实线和曲线,一个JAVA图形绘图的实例程序,仅供参考。
  • java曲线图

    2011-12-21 01:03:00
    %@ page language="java" contentType="image/jpeg;charset=GBK"import="java.awt.*, java.awt.image.*, com.sun.image.codec.jpeg.*"%><%// 在內存中创建图像int width = 600;int height = 500;BufferedIma.....
  • java绘制股票走势

    2011-04-20 21:50:07
    在servlet中编写关于股票走势的程序代码
  • java 绘制动态的图形

    千次阅读 2019-07-18 14:15:28
    效果如下 代码如下(初始版本) ... import java.awt.Graphics;...import java.awt.Graphics2D;...import java.awt.RenderingHints;...import java.util.ArrayList;...import java.util.Collections;...import java.ut...
  • Java绘制正态分布统计

    千次阅读 2020-02-06 14:39:41
    Java中正态分布绘制统计 1.正态分布         正态分布(Normal distribution),又名高斯分布(Gaussian distribution),它在数学等工程领域中使用较为频繁的一种概率分布,尤其在统计学上...
  • //设置点的大小(上显示的点的大小和图例中点的大小都会被设置) renderer.setXAxisMin(0); //设置X轴的最小值 renderer.setXAxisMax(8); //设置X轴的最大值 renderer.setYAxisMin(yStart); //设置Y轴的最小值 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,430
精华内容 4,572
关键字:

java绘制曲线图

java 订阅