Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在for循环中绘制散点图形,只生成一个图形:Python_Python_For Loop_Numpy_Matplotlib - Fatal编程技术网

在for循环中绘制散点图形,只生成一个图形:Python

在for循环中绘制散点图形,只生成一个图形:Python,python,for-loop,numpy,matplotlib,Python,For Loop,Numpy,Matplotlib,我只想生成一个图形,其中包含在for循环中生成的所有散点图,当然,在循环中的每个迭代之间更改颜色。这是到目前为止我的代码。它会单独绘制每个散点图,但我希望同时显示所有曲线。感谢您的帮助 import sys import getopt import os import numpy as np import pandas as pd import datetime import matplotlib.dates as mdates import matplotlib.pyplot as plt

我只想生成一个图形,其中包含在for循环中生成的所有散点图,当然,在循环中的每个迭代之间更改颜色。这是到目前为止我的代码。它会单独绘制每个散点图,但我希望同时显示所有曲线。感谢您的帮助

import sys
import getopt
import os 
import numpy as np
import pandas as pd
import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.pyplot import cm 



def usage():
  print "\nThis is the usage function\n"
  print 'Usage:\n'
  print 'YEAR: plotData -y [option]'
  print 'HELP: plotData -h'

def main(argv):
  try:
      opts, args = getopt.getopt(sys.argv[1:], ':y:h', ['year=', 'help'])
      if not opts:
        print 'No options supplied'
        usage()
  except getopt.GetoptError,e:
       print e
       usage()
       sys.exit(2)

  for opt, arg in opts:
     if opt in ('-h', '--help'):
         usage()
         sys.exit(2)

     elif opt in ('-y', '--year'):
         year_data = arg
         print 'YEAR: '+ year_data + ' Stations:\n'

         for dirname, dirnames, filenames in os.walk(year_data) :

             for sta in filenames:
                 N = len(filenames)
                 SplitName = sta.split('.', 3)
                 StaName =  SplitName[0]
                 M = filenames.index(sta)
                 comp = SplitName[2]
                 print StaName

                 f = os.path.join(dirname, sta)
                 YYYYJJJ = np.loadtxt(f, dtype='float', unpack=True)
                 xdates = [datetime.datetime.strptime(str(int(date)),'%Y%j') for date in YYYYJJJ]
                 cons = len(YYYYJJJ)
                 uno = np.ones((cons), dtype=np.int)
                 uno = uno*M

                 fig1, ax1 = plt.subplots(figsize=(15,10))       
                 #ax1.set_title("Station: "+StaName+','+' Component: '+comp)
                 ax1.set_xlabel('Time')
                 ax1.set_ylim(-1, N+2)
                 ax1.axes.get_yaxis().set_visible(False)
                 ax1.grid(True)

                 ax1.scatter(xdates,uno, c='b', alpha=1, marker=(5, 0), s=30)
                 plt.hold(True)
                 plt.show()
                 #fig1.savefig('example'+'.pdf', format='pdf', dpi=1000) 

     else:
         print "Input parameters are not recognized, aborting"
         sys.exit(2)

if __name__ =='__main__':
    main(sys.argv[1:]) 
正在读取的表格示例如下(在名为“2016”的目录中):


通过取消锁定,将地物定义和
plt.show()
移动到循环外部,如下所示:

fig1, ax1 = plt.subplots(figsize=(15,10))
#ax1.set_title("Station: "+StaName+','+' Component: '+comp)
ax1.set_xlabel('Time')
ax1.set_ylim(-1, N+2)
ax1.axes.get_yaxis().set_visible(False)
ax1.grid(True) 

for sta in filenames:
    N = len(filenames)
    SplitName = sta.split('.', 3)
    StaName =  SplitName[0]
    M = filenames.index(sta)
    comp = SplitName[2]
    print StaName

    f = os.path.join(dirname, sta)
    YYYYJJJ = np.loadtxt(f, dtype='float', unpack=True)
    xdates = [datetime.datetime.strptime(str(int(date)),'%Y%j')
              for date in YYYYJJJ]
    cons = len(YYYYJJJ)
    uno = np.ones((cons), dtype=np.int)
    uno = uno*M
    ax1.scatter(xdates,uno, c='b', alpha=1, marker=(5, 0), s=30)

plt.show()

顺便说一下,您还可以将
N=len(文件名)
从循环中取出
fig1, ax1 = plt.subplots(figsize=(15,10))
#ax1.set_title("Station: "+StaName+','+' Component: '+comp)
ax1.set_xlabel('Time')
ax1.set_ylim(-1, N+2)
ax1.axes.get_yaxis().set_visible(False)
ax1.grid(True) 

for sta in filenames:
    N = len(filenames)
    SplitName = sta.split('.', 3)
    StaName =  SplitName[0]
    M = filenames.index(sta)
    comp = SplitName[2]
    print StaName

    f = os.path.join(dirname, sta)
    YYYYJJJ = np.loadtxt(f, dtype='float', unpack=True)
    xdates = [datetime.datetime.strptime(str(int(date)),'%Y%j')
              for date in YYYYJJJ]
    cons = len(YYYYJJJ)
    uno = np.ones((cons), dtype=np.int)
    uno = uno*M
    ax1.scatter(xdates,uno, c='b', alpha=1, marker=(5, 0), s=30)

plt.show()