Python 2.7 使用函数从字典中提取数据绘制多个数据集(matplotlib)

Python 2.7 使用函数从字典中提取数据绘制多个数据集(matplotlib),python-2.7,matplotlib,Python 2.7,Matplotlib,我想从以下格式的字典中打印选择数据: dictdata = {key_A: [(1,2),(1,3)]; key_B: [(3,2),(2,3)]; key_C: [(4,2),(1,4)]} 我使用以下函数提取与特定键对应的数据,然后将x和y值分为两个列表,可以绘制 def plot_dictdata(ax1, key): data = list() data.append(dictdata[key]) for list_of_points in data:

我想从以下格式的字典中打印选择数据:

dictdata = {key_A: [(1,2),(1,3)]; key_B: [(3,2),(2,3)]; key_C: [(4,2),(1,4)]}
我使用以下函数提取与特定键对应的数据,然后将x和y值分为两个列表,可以绘制

def plot_dictdata(ax1, key):
    data = list()
    data.append(dictdata[key])
    for list_of_points in data:
        for point in list_of_points:
            x = point[0]
            y = point[1]
    ax1.scatter(x,y)
我希望能够多次调用这个函数(见下面的代码),并使所有相关的数据集显示在同一个图表上。但是,最终绘图仅显示最后一组数据。如何在不清除前一组数据的情况下,在同一个图形上绘制所有数据集

fig, ax1 = plt.subplots()
plot_dictdata(ax1, "key_A") 
plot_dictdata(ax1, "key_B") 
plot_dictdata(ax1, "key_C")
plt.show()
我刚刚开始使用matplotlib,无法使用下面讨论相关问题的示例找出解决方案。先谢谢你。
问题可能与您认为的不同。之所以只绘制最后一个点,是因为在每个循环步骤中,
x
y
被重新分配,因此在循环结束时,每个步骤都包含一个值

作为一种解决方案,您可能希望使用一个列表将值附加到其中,如

import matplotlib.pyplot as plt

dictdata = {"key_A": [(1,2),(1,3)], "key_B": [(3,2),(2,3)], "key_C": [(4,2),(1,4)]}

def plot_dictdata(ax1, key):
    data = list()
    data.append(dictdata[key])
    x=[];y=[]
    for list_of_points in data:
        for point in list_of_points:
            x.append(point[0])
            y.append(point[1])
    ax1.scatter(x,y)

fig, ax1 = plt.subplots()
plot_dictdata(ax1, "key_A") 
plot_dictdata(ax1, "key_B") 
plot_dictdata(ax1, "key_C")
plt.show()
导致

值得注意的是,
plot\u dictdata
函数可以简化很多,得到与上述相同的结果:

def plot_dictdata(ax1, key):
    x,y = zip(*dictdata[key])
    ax1.scatter(x,y)

你的假设是正确的,错误不是我所预料的。这种简化也很有用,因为我还没有遇到zip函数。非常感谢。