symlog only handles linthresh >= 1

Hi everyone,

This is my first posting on matplotlib-devel. I have only picked up
python and MPL a year ago for some bioinformatics stuff and I love it. I have never been involved in contributing to an
open-source project but I would love to help. I have only basic understanding of tools like svn etc, and I have never coded in a collaborative environment. Let me know the best way for me to help.

Here is my problem:

I am trying to create a scatter plot with log axes (where all the values are <1), but I also want to plot points that are zero-valued. I tried to use the symlog scale with a linthreshold of 1e-5 or so, but it wasn’t working as expected. I looked into the code and it appears that the implementation for SymmetricalLogTransform is designed only to handle linthresh parameters >=1. The transform does funny things if the threshold is smaller.

It’s not obvious to me how to implement a scale that can handle positive and negative values for a threshold < 1 (which is maybe why it is implemented currently as it is). Would it make most sense for me to try to modify the symlog scale to handle this case? Or write a completely new scale specifically for this purpose, which I can contribute separately?

Also, how would I actually make the contribution? If I were to modify the current SymmetricalLogTransform, would I provide a diff output from the current SVN version? Or commit it myself? And what about if I were to write a new scale?

Thanks for the help!



Uri Laserson
PhD Candidate, Biomedical Engineering
Harvard Medical School (Genetics)
Massachusetts Institute of Technology (Mathematics)

phone +1 917 742 8019