我有一些简单的代码,一次计算一个值。我想要一个随着代码运行而更新的情节。在每次迭代中,我都会为 y 轴计算一个新值,称为avesofar
。 我只想用这个新值在 x-indexi
处绘制另一个点。
using Plots
function hamming4(bits1::Integer, bits2::Integer)
return count_ones(bits1 ⊻ bits2)
end
function random_strings2(n, N)
mask = UInt128(1) << n - 1
return [rand(UInt128) & mask for i in 1:N]
end
function find_min(strings, n, N)
minsofar = n
for i in 1:N
for j in i+1:N
dist = hamming4(strings[i], strings[j])
if dist < minsofar
minsofar = dist
end
end
end
return minsofar
end
function ave_min(n, N)
ITER = 100
strings = random_strings2(n, N)
new_min = find_min(strings, n, N)
avesofar = new_min
# print("New min ", new_min, ". New ave ", avesofar, "n")
total = avesofar
for i in 1:ITER-1
strings = random_strings2(n, N)
new_min = find_min(strings, n, N)
avesofar = avesofar*(i/(i+1)) + new_min/(i+1)
print("New min ", new_min, ". New ave ", avesofar, "n")
end
return avesofar
end
N = 2^15
n = 99
print("Overall average ", ave_min(n, N), "n")
以下是一次绘制一个点的方法:
using Plots
pyplot()
p = Plots.scatter(; lab="")
Plots.scatter!(p, [1], [2]; lab="point 1")
Plots.scatter!(p, [3], [4]; lab="point 2")
Plots.scatter!(p, [5], [6]; lab="point 3")
您可以通过将!
附加到函数名称来更新"绘图"中的绘图。因此,plot(x, y)
将使用您的点创建一个初始图,plot!(xnew, ynew)
将使用新点更新最后一个图。
因此,对于您的情况,只需在循环中添加plot!(i, avesofar)
即可。正如 @przemyslaw-szufel 所提到的,如果您不想用线连接点,您将使用scatter
/scatter!
。