如何使用pyplot.plot的变量数参数?

时间:2016-02-10 11:15:14

标签: python matplotlib

这是我的数据和我想要制作的图表:

from numpy import array
from os.path import expanduser
import matplotlib.pyplot as plt
sns.set(style="darkgrid")

data = [array([8, 4, 9, 6, 2]), array([5, 4, 4, 1, 2]), array([4, 3, 1, 5, 6]), array([8, 3, 5, 6, 4])]

for d in data:
    plt.plot(d)

# plt.savefig(expanduser("~/Documents/rural_juror.pdf"))

enter image description here

由于我想在同一个seaborn facetgrid中绘制其中的几个,我不能使用循环,但必须在一行上完成,如下所示:

plt.plot(*data)
# produces same result as 
# plt.plot(data[0], data[1], data[2], data[3])

然而,这不起作用,但产生如下图形:

enter image description here

我猜这与绘制data, looks, data, looks...类型的参数有关,但我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

是的,如果您想使用单行播放,则需要提供xy值。你可以这样做:

import numpy as np
x = np.arange(5)
data = [x, array([8, 4, 9, 6, 2]),
        x, array([5, 4, 4, 1, 2]),
        x, array([4, 3, 1, 5, 6]),
        x, array([8, 3, 5, 6, 4])]
plt.plot(*data)

答案 1 :(得分:1)

对于单行循环语句,您可以使用如下列表解析:

lines = [plt.plot(d) for d in data]

lines将是matplotlib.lines.Line2D个对象的列表。

答案 2 :(得分:0)

我无法在不安装seaborn的情况下对此进行测试,但看起来FacetGrid使用DataFrame作为数据输入。 http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.FacetGrid.html

所以这应该有用

import pandas as pd
data = [array([8, 4, 9, 6, 2]), array([5, 4, 4, 1, 2]), array([4, 3, 1, 5, 6]), array([8, 3, 5, 6, 4])]

df = pd.DataFrame(data)
df.transpose() #not sure if you need it transposed
g = sns.FacetGrid(df)