【问题标题】:Multiple plots with matplotlib in a nested while loop在嵌套的while循环中使用matplotlib进行多个绘图
【发布时间】:2012-04-20 11:17:48
【问题描述】:

我正在编写一个程序来控制 LCR 仪表(细节并不重要)。因此我需要两个嵌套的while 循环(简单示例):

while x <= stopFrequency:
    y = startVoltage
    while y <= stopVoltage:
        getCapacity = y * 2
        y += stepValueVoltage 
    x += stepValueFrequency 

现在我需要为ygetCapacity 的不同频率(外环)绘制图。对于一个频率,我可以获得ygetCapacity 的图。但更重要的是,我不知道如何在一个绘图上获取图表。

【问题讨论】:

    标签: python matplotlib nested-loops


    【解决方案1】:

    要将多个图(“图表”)放在同一轴(“图”)上,只需为每个图调用一次plt.plot

    import matplotlib.pyplot as plt
    import itertools
    markers = itertools.cycle([ '+', '*', ',', 'o', '.', '1', 'p', ])
    while x <= stopFrequency:
        y = startVoltage
        ys = []
        vals = []
        while y <= stopVoltage:
            ys.append(y)
            vals.append(getCapacity)
            getCapacity = y * 2
            y += stepValueVoltage
        plt.plot(ys, vals, 
                 label = 'x: {0}'.format(x),
                 marker = next(markers))
        x += stepValueFrequency
    plt.legend(loc = 'best')
    plt.show()
    

    【讨论】:

    • 非常感谢!这正是我所需要的。我的代码几乎和你一样,但是我在第一次之前放置了 ys=[] 和 vals=[] ,这是一个错误的举动 :-) Tx 也用于标签格式,我不知道!跨度>
    • 也许我还有一个小问题。在这里你使用.format。现在每个情节都有另一种颜色,是否还有命令让它们具有另一种线条类型(如虚线或圆圈或其他)?
    • 我添加了一些代码来展示如何为每个图分配不同的标记。您可以通过重新定义markers 变量来更改使用的特定标记。可用的选项是documented herethis example 也显示了如何使用 LaTeX 字符作为标记。由于我不知道您需要多少标记,我使用itertools.cycle 使标记无限循环。
    • 哇,太棒了!非常感谢!
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多