使用字典列表在matplotlib中绘制多个图

odopli94  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(182)

我有一个简单的绘图函数:

def plot_data(dataset="boys", baby_name="David"):
    ax = dataset.T.sort_index().loc[:, baby_name].plot(legend = baby_name)

list_of_dict = [{"data": boys, "baby_name": "David",
                 "data": girls, "baby_name": "Susan",
                 "data": boys, "baby_name": "Colin",
                 "data": girls, "baby_name": "Frances"}]
for l in list_of_dict:
    ax = plot_data(l['data'], l['baby_name'])

我可以把不同的情节层层叠加

ax = plot_data("boys", "David"])
ax = plot_data("boys", "Susan"])

但是如果我尝试循环遍历列表和图,我只得到一个图,为什么呢?
情节是我想要达到的。

ux6nzvsh

ux6nzvsh1#

当前,您在每次调用plot_data函数时都要重新定义ax。要在多次调用plot_data时保留数据,您需要定义一个顶级ax,并将其作为另一个参数传递给plot_data。例如,请参见this answer

import matplotlib.pyplot as plt
df = pd.read_table('data', sep='\s+')
fig, ax = plt.subplots()

for key, grp in df.groupby(['color']):
    ax = grp.plot(ax=ax, kind='line', x='x', y='y', c=key, label=key)
vom3gejh

vom3gejh2#

我的方法是认识到数据结构只是一个简单的字典列表,正如两个答案所暗示的那样。我只是改变了列表,并为每个字典创建了一个新的字典。简单。

list_of_dict = [{"data": boys, "baby_name": "David"},
                {"data": girls, "baby_name": "Susan"},
                {"data": boys, "baby_name": "Colin"},
                {"data": girls, "baby_name": "Frances"}]
for d in list_of_dict:
    ax = plot_data(d["data"], d["baby_name"])

相关问题