python - 使用循环从列表创建子图。使数据绘制到两个子图上

标签 python loops matplotlib

我尝试使用循环创建一个包含两个子图的图形,但每个子图的数据不断绘制到两个子图。这是我所拥有的示例:

import matplotlib.pyplot as plt

my_graph = []

plot_1 = []
plot_2 = []

line_1 = 1
line_2 = 2
line_3 = 3
line_4 = 4

class Plots:
    def __init__(self, list_of_lines = []):
        self.list_of_lines = list_of_lines

    def append_line(self, newLine):
            self.list_of_lines.append(newLine)

plot_1 = Plots()
plot_1.append_line(line_1)
plot_1.append_line(line_2)
my_graph.append(plot_1)

plot_2 = Plots()
plot_2.append_line(line_3)
plot_2.append_line(line_4)
my_graph.append(plot_2)

def plotting(graph):
    fig, axes = (ax1, ax2) = plt.subplots(2, figsize=(8,6))
    for x in range(len(graph)):
        for line in graph[x].list_of_lines:
            axes[x].axhline(y=line)


plotting(my_graph)

并且,当它运行时,它给了我两个子图,两个子图都包含所有 4 行。但是,我想要实现的是在第一个子图上使用 line_1line_2 ,在第一个子图上使用 line_3line_4第二个子图。

如果有人有解决办法,请告诉我。

最佳答案

所以,在尝试之后,我找到了一个解决方案:

在我的类的 __init__ block 中:

class Plots:
    def __init__(self, list_of_lines = []):
        self.list_of_lines = list_of_lines

    def append_line(self, newLine):
            self.list_of_lines.append(newLine)

我把它改为:

class Plots:
    def __init__(self):
        self.list_of_lines = []

    def append_line(self, newLine):
            self.list_of_lines.append(newLine)

这解决了问题。我不知道为什么,但是用我原来的方式定义类变量时提出了这个问题。无论如何,它是固定的。 希望这能帮助其他尝试用类创建绘图的人。

关于python - 使用循环从列表创建子图。使数据绘制到两个子图上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417374/

相关文章:

java - 如何创建一个包含比较元素以获得最高元素的数组的方法?

java - 试图让游戏运行,循环条件

python - Matplotlib pyplot 选项为 dict 或任何格式

python - tkinter 读取通过 for 循环添加的复选框值

java - 扫描仪不等待 NewLine 通过循环收集输入

python - Matplotlib boxplot 使用预先计算的(汇总)统计数据

python - Pandas :在垃圾箱内绘制平均值 - 需要格式化帮助

python - 按除法值排序列表

python - 为什么 namedtuple._as_dict() 比使用 dict() 转换慢

python - 有没有办法通过 zipimport 使用已编译的 C 模块?