On 2011-12-01 19:20, stm atoc wrote:
Thanks for all information/websites and advice. Yes the graph is
exactly like the one you mentioned. Also, I would like to have them in
one not two, but I think since the dimension of the x and y are not
same, I have no choice.

  What I like to do now is comparing 2 (later 3 or more) different sets
of data, e.g. comparison among Conc[1] with sets....

I have changed the script like this:

with open("ourtest_out.list", "r") as f:
    z = numpy.array([float(v) for v in f.readline().split()[1:]])

a1 = numpy.loadtxt("ourtest_out1.list", skiprows=3)
a2 = numpy.loadtxt("ourtest_out2.list", skiprows=3)
a3 = numpy.loadtxt("ourtest_out3.list", skiprows=3)

N = 100

Conc1 = a1[0:, N+1:] #base case
Conc2 = a2[0:, N+1:] # Ydw=0.1
Conc3 = a3[0:, N+1:] # nuh=0.01
lw = 2.0 #linewidth

You aren't using "lw" so it doesn't make sense to define it.

dpi = 96
figure(figsize=(10,6),dpi=dpi)

I prefer to not clutter up the namespace with "star imports" (from pylabs import *) but it's your choice.


pyplot.subplot(111)

If you just use one graph/figure this call is unnecessary.

pyplot.plot(Conc1[1], z)
pyplot.plot(Conc2[1], z)
pyplot.plot(Conc3[1], z)
pyplot.xlim(0,1)

plt.xlabel('Conc')
plt.ylabel('z')

I assume you've got these lines from the tutorial. But there they are using the following import:

import matplotlib.pyplot as plt

I've used

import matplotlib.pyplot as pyplot

so you have to decide which name you want to use (You can't mix both).

In general, if you just use

import matplotlib.pyplot

you would have to use always the full name:

matplotlib.pyplot.xlabel('Conc')

But with the "as"-keyword you can choose, which name gets imported into the namespace.

If you have problems understanding imports and namespaces look at Alan's tutorial: http://www.freenetpages.co.uk/hp/alan.gauld/tutfunc.htm (section "Using Modules")
http://www.freenetpages.co.uk/hp/alan.gauld/tutname.htm (about Namespaces)


pyplot.grid(True)
show()
savefig('Conc.png')

You should call "savefig" before "show" because in non-interactive mode (calling the script from the commandline) "show" will block all figures until they are closed. So after "show" there won't be any figures left and "savefig" will write an empty figure to the file.

close()

This can give me the comparison in one graph, I suppose.
Now, first I like to know if this is a fine/logical script. otherwise
I would like to know about probably a better way to write it with less
lines!

You could write the whole script in a more object-oriented style where you create a figure-instance and then set the attributes you want instead of calling all the functions. But for the beginning it's ok.

and second, when I do plot, each grid between x or y axis, has a
thickness of 0.2. what I like do is to change it to 0.1 grid . So, I
couldn't find it through matplotlib website (at least with my
searching. Would it be possible helping me about?

You set the scale with the "xticks"-function (or the corresponding "yticks"):
http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.xticks

So in your case you could use

pyplot.xticks(numpy.arange(0, 1.1, 0.1))

Bye, Andreas
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to