【问题标题】:show many graphics in one plot (sage)在一个图中显示许多图形(鼠尾草)
【发布时间】:2014-05-08 19:23:22
【问题描述】:

您好,请您帮帮我,如何在同一个网格中使用 .show(),也不是每次迭代都绘制新图。

import numpy as np
import matplotlib.pyplot as plt
import time

# Time step
n = 100 # Number of end-points
T = 1   # Length of [0,T] in time units
Delta = T/n

# Create a vector as for x-axis
x = np.arange(0, 1, .01)

# Create an empty vector W of the desired length
W = np.zeros(n, np.dtype(float))

# Z variable, N(0,1)
mu, sig = 0, 1  

# The simulated path
for I in range(1, 4):
    for i in range(1, len(W)):
        W[i] = W[i-1] + np.random.normal(mu, sig) * np.sqrt(.01)           
    plt.subplot(2,2,2)
    plt.plot(x,W) 
    time.sleep(2)
    plt.show()

我绝对不明白,为什么如果我将 plt.show() 放在循环中 => 会有与循环范围内一样多的图。

我应该怎么做才能让 N 个图在一段时间后出现在同一个子图中?

谢谢。

Source

【问题讨论】:

  • 在 Sage 中组合图的一般方法是添加它们:p = plot(sin); q = plot(cos); (p+q).show().
  • 是的,但这是“plt.plot”,所以 plt.plot(x,w) + plot(cos) 返回错误。
  • 我怀疑这确实是一个关于 matplotlib 绘图如何与 Sage 笔记本交互的问题。

标签: python loops plot ipython sage


【解决方案1】:
import numpy as np
import matplotlib.pyplot as plt
import time

@interact
def _(f=(1,10,1)):
    plt.cla()
    n = 100 
    T = 1   
    dt = T/n

    x = np.arange(1, step=dt)

    W = np.zeros(n, np.dtype(float))

    t = np.arange(2.8,3.0,0.1)
    l = np.sqrt(2*t*ln(ln(t)))
    plt.plot(l) # <= add subplot

    # Z variable, N(0,1)
    mu, sig = 0, 1

    for ITER in range(1, f+1):
        for i in range(1, len(W)):
            W[i] = W[i-1] + np.random.normal(mu, sig) * np.sqrt(dt)
        plt.plot(x,W)     
    plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多