如何在Python中组合图形? (我得到了多张图。)

时间:2015-08-28 18:46:51

标签: python numpy matplotlib

我的脚本会生成8个单独的图表。我希望能够在一个图表上看到所有行。此外,如果提示我想生成子图;所以在我的情况下,1张纸上有8张图。

import numpy as np
import matplotlib.pyplot as plt

columns = input('How many columns? ')
data = np.genfromtxt('csv_file',delimiter=',', dtype = float)

m = 1
p = 0
while p == 0:
    if m < (columns):
        x = [row[0] for row in data]
        y = [row[m] for row in data]
        fig = plt.figure()
        ax = fig.add_subplot(111, axisbg = 'w')
        ax.plot(x,y,lw=1.3)
        plt.show()
    else:
        p = 1
        m = m+1

2 个答案:

答案 0 :(得分:2)

  1. 你得到几个图的原因是你在每个循环中调用plt.figure来创建一个新的图形窗口。将它放在循环之前,然后在循环中创建新的sublot

  2. 您只需通过m[1, 2, 3, ..., columns]的值。这内置为range,其中range(columns)提供[0, 1, 2, ..., columns-1],因此range(1, columns+1)将是您想要的。您不需要手动增加m,并且您不需要使用p来停止循环:这些都会在m每次m时自动发生范围内的值。

  3. 要获取数据的data[:, m]列,您只需切换&#34;列&#34;维度,这是第二维:m给出:列中的所有行。空m表示&#34;所有行&#34;并且fig.add_subplot(nrows, ncols, plot_number)表示&#34;列m&#34;。 (你可以像列表那样做整个切片,但是在多个维度上)。有关详细信息,请参阅herehere

  4. 对于子图,您必须更改每个图的第一个参数。您可以这样称呼它:plot_number。因此,您希望m在您的循环中为import numpy as np import matplotlib.pyplot as plt data = np.genfromtxt('csv_file',delimiter=',', dtype = float) columns = data.shape[1] - 1 # a numpy array's `shape` is (rows, columns, etc). I am subtracting the x column. nrows, ncols = 4, 2 # the product of these should be number of plots (I'm assuming columns=8) fig = plt.figure() x = data[:, 0] # same as [row[0] for row in data], and doesn't change in loop, so only do it once. for m in range(1, columns+1): # this loops from 1 through columns y = data[:, m] # same as [row[m] for row in data] ax = fig.add_subplot(nrows, ncols, m, axisbg = 'w') ax.plot(x, y, lw=1.3) plt.show() # after loop finishes, only need to show once.

  5. 所有这一切:

    chrome.tabs.executeScript({code: "window.myExtensionVariables"}, function(result) {
        if (!result[0]) {
            /* inject the script */
        }
    });
    

答案 1 :(得分:0)

每次执行plt.show()时,它都会显示到目前为止的图形,并将其重置为下一个图形。

如果你把plt.show()放在最后,那么会有一个包含所有行的图表。

对于subplot选项,你需要循环通过add_subplots 241,242,243,244,245,246,247,248(以及最后的plt.show()),而不是111.

一开始的一些输入和一些if语句应该可以看到你!