android - Kotlin - 如何使用 GraphView 以图形方式绘制数学函数?
问题描述
我有以下函数,它是正态分布的公式,我的目标是使用 GraphView 库对其进行绘图。好吧,我有以下内容:
- Id—— 情节
代码 kotlin
class ExampleActivity : AppCompatActivity() {
lateinit var series1: LineGraphSeries<DataPoint>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example)
series1 = LineGraphSeries<DataPoint>()
val media = 8.0
val sd = 2.0
fun linspace(start: Double, stop: Double, num: Int) = Array(num) { start + it * ((stop - start) / (num - 1)) }
val x1 = linspace(media - 3*sd, media + 3*sd, 10)
val normal = NormalDistribution(media,sd)
for (i in x1){
val y = normal.cumulativeProbability(i)
series1.appendData(DataPoint(i,y),false,x1.size)
}
plot.viewport.isXAxisBoundsManual = true
plot.viewport.setMaxX(20.0)
plot.viewport.isYAxisBoundsManual = true
plot.viewport.setMaxY(2.0)
//plot.viewport.isScalable = true
plot.addSeries(series1)
}
}
这很奇怪,在python中我也用过,结果更完整,我给你看。
代码蟒蛇
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
mu = 8
sigma = 2
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 10)
print(np.linspace(mu - 3*sigma, mu + 3*sigma, 10))
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()
信息
代码 kotlin
val x1 = linspace(media - 3*sd, media + 3*sd, 10)
==
代码 Python
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 10)
你能帮我吗,我需要添加什么?
解决方案
看起来 python 示例正在绘制.pdf
“概率密度函数”,而 kotlin 示例正在绘制.cumulativeProbability
本质上是 PDF 积分的函数。您很可能希望改用该.density
方法。
推荐阅读
- javascript - 如何将我的项目中的函数导入 script.JS
- java - 如何将一个类的ArrayList变成一个HashMap?
- hibernate-ogm - Hibernate-OGM (neo4j) 无人问津
- angular - 在 ngAfterViewInit 之后 createEmbeddedView 进入内容投影
- html - 按钮组,相对位置,在页脚上方
- sql - 在 Presto 地理空间函数中旋转线串
- c# - Dotnet restore 为 NuGet 包提供 301 错误
- angular - 如何禁用 Handsontable 热表正文中第一行的第一个正文字体样式?
- r - 关于安装 igraph 和其他程序的一般问题
- java - Is it discouraged to use if in java streams?