Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using a loop variable to specify color in matplotlib

I have many files of data and I want to plot all of them on the same plot but with different colors. I am using the following code

from pylab import loadtxt, average, std, argsort
from os import listdir
from fnmatch import fnmatch
import matplotlib.pyplot as plt


a=[]
for file in listdir('.'):
   if fnmatch(file,'A10data*'):
      a+=[str(file)]



for file in a:
  T,m_abs, m_abs_err,m_phy,m_phy_err = loadtxt(file,unpack=True)
  T_sort = argsort(T)
  plt.xlim(0.00009,10.1)
  plt.ylim(-1,350)

  plt.semilogx(T[T_sort],m_abs[T_sort],'ro-')
  plt.errorbar(T[T_sort],m_abs[T_sort],yerr=m_abs_err[T_sort],fmt='ro')
  plt.semilogx(T[T_sort],m_phy[T_sort],'r^-')
  plt.errorbar(T[T_sort],m_phy[T_sort],yerr=m_phy_err[T_sort],fmt='r^')


plt.show()

Probably I can use an integer and use the integer to specify the color of the plot. Can someone help me with the syntax?

like image 427
lovespeed Avatar asked Nov 04 '22 20:11

lovespeed


1 Answers

If the number of files/plots is small, you could make an array of colors that is the same length as array called a above: something like:


colors = ["red", "blue" , "green", "orange", "purple"]
ncolor = 0
for file in a:
    plt.semilogx(T[T_sort], m_abs[T_sort], 'o-', color=colors[ncolor])
    ncolor+=1
like image 152
reptilicus Avatar answered Nov 15 '22 05:11

reptilicus