如何使用Android图形绘制无缝曲线?

Jin*_*ung 12 android bezier graph curve-fitting

我想使用Android图形使用如下绘制无缝曲线

 canvas.quadTo(.....);
Run Code Online (Sandbox Code Playgroud)

Android参考说这个方法使用Bezier曲线

但是这种方法不支持具有三个以上点的绘制曲线

P1,P2,P3,P4,P5

我怎样画出如下曲线?

MATLAB

我听说这是"非线性曲线拟合".

Android有曲线拟合库吗?

Ava*_*anz 6

对于iPhone而言,您拥有DataAnalysis,对于Android,您可以使用Google Analytics SDK v2来实现您的目标.

以下是查询示例:

var lineChart = getChartObj();
lineChart.setParams(barChart.getParams());
lineChart.setParam('cht', 'lc');
lineChart.setParam('chm', '');
var lineChartURL = paramsToURL(chartData.chartParams, chartData.baseURL);
drawChart('visitorDiv',lineChartURL);
Run Code Online (Sandbox Code Playgroud)

您可能会发现有趣的是查看图表上的更多详细信息以专门匹配您要绘制的模型.

您还可以考虑的另一个替代方案是使用带有Qt Quick的 Line Graph的QML :

Graph.LineGraph {
    width: parent.width
    height: parent.height - legend.height - parent.spacing
    model: learningProgressModel

    dimensions: [
        Graph.Dimension {
            id: accuracyDimension
            dataColumn: 5
            color: "#ffb12d"
            maximumValue: 1.0
            label: i18n("Accuracy")
            unit: "%"
            unitFactor: 100
        },
        Graph.Dimension {
            id: charactersPerMinuteDimension
            dataColumn: 6
            color: "#38aef4"
            maximumValue: 400
            label: i18n("Characters per Minute")
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

适用于Android的Octave也可能很有趣,特别是如果您想要广泛的绘图模型选项.您可以使用命令drawBezierCurve,仅提供数据中的点:

points = [0 0; 3 1; -2 1; 1 0];
 drawBezierCurve(points);
 hold on
 plot(points([1 4],1),points([1 4],2),'go');
 plot(points([2 3],1),points([2 3],2),'rs');
 line(points([1 2],1),points([1 2],2),'color','k');
 line(points([3 4],1),points([3 4],2),'color','k');
 h = drawBezierCurve(points, 'discretization', 6, 'color','r');
 hold off        
Run Code Online (Sandbox Code Playgroud)

然后,要实现您想要在Android上显示的非线性曲线拟合,只需使用更符合您需求的数据或模型.