Scatter plot XY散射片

Scatter plot XY散射片,scatter-plot,androidplot,Scatter Plot,Androidplot,正在尝试使用AndroidPlot创建XY散点图,遇到问题。。。因此,绘图只从左到右绘制点,本质上是一个滚动图表 例如。。。假设我有以下坐标,(0,1),(1,0),(0,-1),(-1,0),我希望看到一个菱形(如果所有点都由一条线连接) 我以前成功地使用过AndroidPlot库,所以我对可用的方法有些熟悉 是否有使用AndroidPlot库的散点图示例 希望我在这里讲得通 import java.util.ArrayList; import java.util.Arrays; import

正在尝试使用AndroidPlot创建XY散点图,遇到问题。。。因此,绘图只从左到右绘制点,本质上是一个滚动图表

例如。。。假设我有以下坐标,(0,1),(1,0),(0,-1),(-1,0),我希望看到一个菱形(如果所有点都由一条线连接)

我以前成功地使用过AndroidPlot库,所以我对可用的方法有些熟悉

是否有使用AndroidPlot库的散点图示例

希望我在这里讲得通

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import pl.flex_it.androidplot.XYSeries;

import com.androidplot.series.XYSeries;
import com.androidplot.xy.BoundaryMode;
import com.androidplot.xy.LineAndPointFormatter;
import com.androidplot.xy.SimpleXYSeries;
import com.androidplot.xy.XYPlot;

import android.app.Fragment;
import android.graphics.Color;
import android.os.Bundle;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

    public class Temp extends Fragment {

        private static XYPlot xyPlot;
        private XYSeriesShimmer series;
        private LineAndPointFormatter series1Format;
        private ArrayList<Number> ALdata1, ALdata2;
        private int Adata1[], Adata2[];

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_test, container, false);

            // Import plot from the layout
            xyPlot = (XYPlot) rootView.findViewById(R.id.xyPlot);
            xyPlot.setDomainBoundaries(-2, 2, BoundaryMode.FIXED); // freeze the domain boundary:
            xyPlot.setRangeBoundaries(-2, 2, BoundaryMode.FIXED);

            ALdata1 = new ArrayList<Number>();
            ALdata2 = new ArrayList<Number>();
            ALdata1.clear();
            ALdata2.clear();

            Adata1 = new int[]{0,1,0,-1};
            Adata2 = new int[]{1,0,-1,0};

            series = new XYSeriesShimmer(ALdata1, ALdata2, 0, "Sightings in USA");
            series1Format = new LineAndPointFormatter(Color.TRANSPARENT, Color.BLACK, null); // line color, point color, fill color
            xyPlot.addSeries(series, series1Format);

            plotDataMethod();

            return rootView;
        }

        private void plotDataMethod() {

            for(int i=0; i<Adata1.length; i++){
                ALdata1.add(Adata1[i]);
                ALdata2.add(Adata2[i]);

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                series.updateData(ALdata1, ALdata2);
                xyPlot.redraw();
            }

        }

    }
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collection;
导入pl.flex_it.androidplot.XYSeries;
导入com.androidplot.series.XYSeries;
导入com.androidplot.xy.BoundaryMode;
导入com.androidplot.xy.LineAndPointFormatter;
导入com.androidplot.xy.SimpleXYSeries;
导入com.androidplot.xy.XYPlot;
导入android.app.Fragment;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
公共类临时扩展片段{
私有静态XYPlot XYPlot;
私有XYSeriesShimmer系列;
专用LineAndPointFormatter系列1格式;
私人ArrayList Aldata 1,Aldata 2;
私人国际机场1[],2[];
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.fragment_测试,容器,错误);
//从布局中导入打印
xyPlot=(xyPlot)rootView.findviewbyd(R.id.xyPlot);
xyPlot.setDomainBounders(-2,2,BoundaryMode.FIXED);//冻结域边界:
SetRangeBounders(-2,2,BoundaryMode.FIXED);
ALdata1=新的ArrayList();
ALdata2=新的ArrayList();
ALdata1.clear();
ALdata2.clear();
Adata1=新的int[]{0,1,0,-1};
Adata2=新的int[]{1,0,-1,0};
系列=新XYSeriesShimmer(ALdata1、ALdata2、0,“在美国的目击”);
series1Format=newlineandpointformatter(Color.TRANSPARENT,Color.BLACK,null);//线颜色,点颜色,填充颜色
xyPlot.addSeries(series,series1Format);
plotDataMethod();
返回rootView;
}
私有void plotDataMethod(){

对于(int i=0;i这看起来可能是问题所在-在XYSeriesShimmer中:

@Override
public Number getX(int index) {
    return index;
}
这将始终返回i,这意味着每个元素的x值比上一个元素的x值大1…这正是您所经历的。请尝试将其更改为:

@Override
public Number getX(int index) {
    return dataX.get(i);
}

这一行看起来可疑,甚至不应该编译:series=new XYSeries(ALdata1、ALdata2、0,“在美国的目击事件”);谢谢你的帮助,Nick。我扩展了XYSeries类以接受Xaxis列表和Yaxis列表,请参见上面的编辑。androidPlot库肯定可以绘制分散点,而不是仅从左到右绘制,我想,因此我肯定我遗漏了一些简单的内容。你知道散点图示例吗?
@Override
public Number getX(int index) {
    return dataX.get(i);
}