【问题标题】:Graphing multiple data sets using function to extract data from dictionary (matplotlib)使用函数从字典中提取数据(matplotlib)绘制多个数据集
【发布时间】:2018-02-16 14:24:24
【问题描述】:

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

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,并且无法使用以下讨论相关问题的示例找出解决方案。先感谢您。 how to add a plot on top of another plot in matplotlib? How to draw multiple line graph by using matplotlib in Python Plotting a continuous stream of data with MatPlotLib

【问题讨论】:

    标签: python-2.7 matplotlib


    【解决方案1】:

    问题可能与您想象的不同。您只绘制最后一点的原因是,在每个循环步骤中,xy 都被重新分配,这样在循环结束时,它们中的每一个都包含一个值。

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

    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_dictdata 函数可以简化很多,得到与上面相同的结果:

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

    【讨论】:

    • 您的假设是正确的,即错误不是我所期望的。简化也很有用,因为我还没有遇到 zip 功能。谢谢!
    猜你喜欢
    • 2017-01-03
    • 2021-03-22
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2022-01-04
    • 1970-01-01
    • 2022-01-27
    相关资源
    最近更新 更多