Python 一次打印多个图形

Python 一次打印多个图形,python,matplotlib,Python,Matplotlib,我对python很陌生,所以请容忍我 我的代码如下: import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt df = pd.read_csv(r"/Users/aaronhuang/Desktop/ffp/exfileCLEAN2.csv", skiprows=[1]) magnitudes = df['Magnitude '].value

我对python很陌生,所以请容忍我

我的代码如下:

import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

df = pd.read_csv(r"/Users/aaronhuang/Desktop/ffp/exfileCLEAN2.csv", skiprows=[1])
magnitudes = df['Magnitude '].values
times = df['Time '].values
zscores = np.abs(stats.zscore(magnitudes, ddof=1))
outlier_indicies = np.argwhere(zscores > 3).flatten()
numbers = print(times[outlier_indicies])



window = 2
num = 1
x = times[outlier_indicies[num]- 
window:outlier_indicies[num]+window+1]
y = magnitudes[outlier_indicies[num]- 
window:outlier_indicies[num]+window+1]


plt.plot(x, y)
plt.xlabel('Time (units)')
plt.ylabel('Magnitude (units)')
plt.show()
fig = plt.figure()
打印的内容是:

/Users/aaronhuang/.conda/envs/EXTTEst/bin/python 
 "/Users/aaronhuang/PycharmProjects/EXTTEst/Code sandbox.py"
[2455338.895 2455350.644 2455391.557 2455404.776 2455413.734 2455451.661
 2455473.49  2455477.521 2455507.505 2455702.662 2455734.597 2455765.765
 2455776.575 2455826.593 2455842.512 2455866.508 2455996.796 2456017.767
 2456047.694 2456058.732 2456062.722 2456071.924 2456082.802 2456116.494
 2456116.535 2456116.576 2456116.624 2456116.673 2456116.714 2456116.799
 2456123.527 2456164.507 2456166.634 2456391.703 2456455.535 2456455.6
 2456501.763 2456511.616 2456519.731 2456525.49  2456547.588 2456570.526
 2456595.515 2456776.661 2456853.543 2456920.511 2456953.496 2457234.643
 2457250.68  2457252.672 2457278.526 2457451.89  2457485.722 2457497.93
 2457500.674 2457566.874 2457567.877 2457644.495 2457661.553 2457675.513]
Traceback (most recent call last):
  File "/Users/aaronhuang/PycharmProjects/EXTTEst/Code sandbox.py", line 15, in <module>
    xdata = times[outlier_indicies[numbers] - window:outlier_indicies[numbers] + window + 1]
TypeError: only integer scalar arrays can be converted to a scalar index

Process finished with exit code 1
我试着把上面单独打印的每个数字,在数据框中搜索,然后把数字和两边的10个图绘制出来

我的最终结果应该一次打印大约60个单独的图表

任何建议或帮助都将不胜感激

编辑:

这里是数据集的链接,可供下载


[1]https://spaces.hightail.com/space/BZuCAsY4nO绘制多个图形的最佳方法是使用
plt.subplot()
。这很容易。数据是正确创建的

import pandas as pd
import numpy as np
import random
times = pd.date_range('2000-01-01', freq='1d', periods=6000)
mag = np.random.randint(0,20, (6000,))
df = pd.DataFrame({'Time':times, 'Magnitude':mag})

import matplotlib.pyplot as plt
fig, axes = plt.subplots(6, 10, figsize=(30,30))

for i in range(6):
    for j in range(10):
        x = df.iloc[j*10:(j+1)*10,:]
        axes[i][j].plot(x['Time'], x['Magnitude'])
        axes[i][j].set_xticklabels(x['Time'].dt.date, rotation=45)

更新: 我使用发布的数据运行了上述代码。图形已成功显示


60个单独的图形?你是说多条线叠加在同一轴线上吗?你需要循环60次,每次调用
ax.plot
。我想的是60个独立的图形,而不是在同一个轴上。或者,是否有一种方法可以在关闭另一个后弹出其中一个@Mateenulhaq您可以在同一个图形中以60个独立轴的大平铺网格显示它们。但是如果您确实想要60个独立的图形,您可以只绘制一条线,显示,然后创建一个新的绘图并显示,…您将如何编写此代码?谢谢你的回答,当我打印上面的代码时,它只打印出一个单数图和许多空图。你能帮我修一下吗?谢谢,@r-初学者当前它保存为PNGI收到您的评论,并实际保存为PNG格式以供查看。正如答案中的图像。这是环境问题吗?我的环境是“matplotlib 3.2.2”和“python 3.6.6”。好的,我让图形工作了,我需要在底部添加plt.show。你能帮我改变这部分代码吗?窗口:异常值指示[num]+window+1]y=magnities[num]-window:异常值指示[num]+window+1]plt.绘图(x,y)plt.xlabel('Time(units)'plt.ylabel('magnities(units)'plt.show()=plt.figure()一次显示所有图形?目前它一次只打印一个,由num选择
import pandas as pd
import numpy as np
import random
times = pd.date_range('2000-01-01', freq='1d', periods=6000)
mag = np.random.randint(0,20, (6000,))
df = pd.DataFrame({'Time':times, 'Magnitude':mag})

import matplotlib.pyplot as plt
fig, axes = plt.subplots(6, 10, figsize=(30,30))

for i in range(6):
    for j in range(10):
        x = df.iloc[j*10:(j+1)*10,:]
        axes[i][j].plot(x['Time'], x['Magnitude'])
        axes[i][j].set_xticklabels(x['Time'].dt.date, rotation=45)