android - 在 Android Plot 中更改正弦波宽度

标签 android graph androidplot android-graphview

我正在使用 android plot 来绘制我的动态日期。谁能告诉我如何改变 下图中正弦波的宽度。

enter image description here

我正在使用 Dynamic XY Plot 的示例代码.

下面的代码是我的 Activity 。

public class MyActivity extends Activity {

// redraws a plot whenever an update is received:
private class MyPlotUpdater implements Observer {
    Plot plot;
    public MyPlotUpdater(Plot plot) {
        this.plot = plot;
    }
    @Override
    public void update(Observable o, Object arg) {
        try {
            plot.postRedraw();
        } catch (InterruptedException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
}

private XYPlot dynamicPlot;
private XYPlot staticPlot;
private MyPlotUpdater plotUpdater;

@Override
public void onCreate(Bundle savedInstanceState) {

    // android boilerplate stuff
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // get handles to our View defined in layout.xml:
    dynamicPlot = (XYPlot) findViewById(R.id.dynamicPlot);

    plotUpdater = new MyPlotUpdater(dynamicPlot);

    // only display whole numbers in domain labels
    dynamicPlot.getGraphWidget().setDomainValueFormat(new DecimalFormat("0"));

    // getInstance and position datasets:
    SampleDynamicXYDatasource data = new SampleDynamicXYDatasource();
    SampleDynamicSeries sine1Series = new SampleDynamicSeries(data, 0, "Sine 1");
    SampleDynamicSeries sine2Series = new SampleDynamicSeries(data, 1, "Sine 2");

    dynamicPlot.addSeries(sine1Series, new LineAndPointFormatter(Color.rgb(0, 0, 0), null, Color.rgb(0, 80, 0)));

    // create a series using a formatter with some transparency applied:
    LineAndPointFormatter f1 = new LineAndPointFormatter(Color.rgb(0, 0, 200), null, Color.rgb(0, 0, 80));
    f1.getFillPaint().setAlpha(220);
    dynamicPlot.addSeries(sine2Series, f1);
    dynamicPlot.setGridPadding(5, 0, 5, 0);

    // hook up the plotUpdater to the data model:
    data.addObserver(plotUpdater);

    dynamicPlot.setDomainStepMode(XYStepMode.SUBDIVIDE);
    dynamicPlot.setDomainStepValue(sine1Series.size());

    // thin out domain/range tick labels so they dont overlap each other:
    dynamicPlot.setTicksPerDomainLabel(5);
    dynamicPlot.setTicksPerRangeLabel(3);
    dynamicPlot.disableAllMarkup();

    // freeze the range boundaries:
    dynamicPlot.setRangeBoundaries(-100, 100, BoundaryMode.FIXED);

    // kick off the data generating thread:
    new Thread(data).start();
}

最佳答案

在文件 SampleDynamicXYDatasource.java 中,您可以找到该行

double amp = sinAmp * Math.sin(index + phase + 4);

正弦波在那里产生。通过延迟指数(例如,将其乘以 0.5),您可以增大正弦波的周期,或者用图形的话说,在 x 轴上缩放它。

关于android - 在 Android Plot 中更改正弦波宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21453012/

相关文章:

android - 如何删除 AndroidPlot 中图表周围的所有空间?

android - 我应该导入哪个 fragment 库?

Android bottomviewnavigation将png图标添加到新项目

java - 使用 Java 为迷宫创建 GUI

c# - 找到从一个节点到另一个节点的所有可能路径?

android - 如何在 androidplot 中配置 "PointLabelFormatter"?

android - 尽管有 AsyncTask,但不确定的 ProgressBar 卡住了(不旋转)

android - 为什么折叠工具栏标题在工具栏下面?

android - Android Studio 2.0,org.gradle.process.internal.ExecException:处理'命令错误,退出值非零3

algorithm - 遍历加权边时最大化节点权重和