On Mon, Jun 25, 2012 at 10:03 AM, julien tayon <jul...@tayon.net> wrote:
> Hello,
>
> I made a crude sonogram https://gist.github.com/2983547 with the note
> names instead of the frequency. But, It really angers me not to be
> able to have a log scale for the frequency.
>
> Does any well known workaround exists?
> Is there an easy way to grosso modo do :
> x = time, y = frequency, z=amplitude of spectre with something like a
> specter of one croche at time = t according to the bpm and make an y
> scale logarithmic, then project the amplitude (z) with a colormap on
> x,y plane according to the amplitude, and and have 3D representation?
>
> Basically, I guess it boils down to know if combining those 2 is
> possible :
> http://matplotlib.sourceforge.net/examples/mplot3d/contourf3d_demo2.html
> + log scale for y. I guess I could improve the result by using
> logscale on Z and colormap
> (
> http://stackoverflow.com/questions/5748076/python-matplotlib-contour-plot-logarithmic-color-scale
> )
>
>
> Since it is only for fun, and I don't want to invest myself too much
> my question is really did I missed something while googling for an
> easy solution and if so, what are the good keywords?
>
> Cheers
> --
> Julien
>
>
Julien,
I am not entirely sure if I understood your question right, but I think I
can answer part of it. With respect to using a log scale for 3d axes, it
*should* work, but unfortunately, I have never been able to get it to work
properly. It is an outstanding bug for mplot3d. The "work-around" is to
do the log transformation yourself for the input x/y/z data.
However, there is no reason why you can't use a LogNorm for your colormap.
Just so you understand, color scales in matplotlib are done in two parts.
We have the "Norm" objects which takes data and produce values between 0
and 1 (and handles bad, over, and under values accordingly). And we have
"colormap" objects that take values from 0 to 1 and produce an RGB(A)
array. By default, most functions in matplotlib will use the min/max of
the input data to automatically create a linear Norm object, and will use
the "prism" colormap. However, you can create a LogNorm object and pass it
in as the 'norm' kwarg in most plotting functions.
I hope this helps!
Ben Root
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users