Creating Colored Axis Labels using LaTeX in Interactive Mode

I originally posted to Stack Overflow at
http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
SourceForge version of this list).

I am trying to follow the answer at
http://stackoverflow.com/a/38008501/2988730 to an earlier question of
mine to create colored and styled legend-like entries. I have the
following code:

    import matplotlib as mpl
    mpl.use('ps')
    from matplotlib import pyplot as plt

    mpl.rc('text', usetex=True)
    mpl.rc('text.latex', preamble='\\usepackage{color}\n\\usepackage{dashrule}')

    plt.ion()
    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y $\;$ \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N $\;$ \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
    plt.savefig('test.ps')

The result is as expected. The labels contain black text with a red
line on the Y label and a green line on the X label:
http://i.stack.imgur.com/JCiLI.png.

However, when I try the exact same set of commands without the
`mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
figure neither saves corectly nor shows up correctly on screen:

    import matplotlib as mpl
    from matplotlib import pyplot as plt

    mpl.rc('text', usetex=True)
    mpl.rc('text.latex', preamble='\\usepackage{color}\n\\usepackage{dashrule}')

    plt.ion()
    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y $\;$ \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N $\;$ \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')

    plt.savefig('test.png')
    plt.show()

The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
`plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the same
in this case. The lines after the text show up black.

How do I get the colors to show up in the labels with the default
interactive backend?

Regards,

    -Joe

Have an update on my previous question. I have tried to follow the
instructions at http://matplotlib.org/users/pgf.html for settting up
the PGF backend for PNG and PDF rendering. This method does not work
either:

    import matplotlib as mpl
    from matplotlib.backends.backend_pgf import FigureCanvasPgf
    matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
    from matplotlib import pyplot as plt

    matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
    preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
    preamble.append(r'\usepackage{color}')

    # Text config
    matplotlib.rc('text', usetex=True)
    preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
    preamble.append(r'\usepackage{color}')

    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
    plt.savefig('test.png')

Yields the exact same figure and PNG file with the incorrect black
lines as above. Note that turning off the three lines under `# Text
config` makes the TeX commands print out verbatim, even in the saved
figure. Perhaps there is a way to render the PNG correctly without
pre-clobbering with the text system?

Regards,

    -Joe

···

On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz <jfoxrabinovitz at gmail.com> wrote:

I originally posted to Stack Overflow at
http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
SourceForge version of this list).

I am trying to follow the answer at
Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question of
mine to create colored and styled legend-like entries. I have the
following code:

    import matplotlib as mpl
    mpl.use('ps')
    from matplotlib import pyplot as plt

    mpl.rc('text', usetex=True)
    mpl.rc('text.latex', preamble='\\usepackage{color}\n\\usepackage{dashrule}')

    plt.ion()
    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
    plt.savefig('test.ps')

The result is as expected. The labels contain black text with a red
line on the Y label and a green line on the X label:
http://i.stack.imgur.com/JCiLI.png.

However, when I try the exact same set of commands without the
`mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
figure neither saves corectly nor shows up correctly on screen:

    import matplotlib as mpl
    from matplotlib import pyplot as plt

    mpl.rc('text', usetex=True)
    mpl.rc('text.latex', preamble='\\usepackage{color}\n\\usepackage{dashrule}')

    plt.ion()
    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')

    plt.savefig('test.png')
    plt.show()

The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
`plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the same
in this case. The lines after the text show up black.

How do I get the colors to show up in the labels with the default
interactive backend?

Regards,

    -Joe

I can confirm that this does not work as expected but I don't know exactly
why.

With regards to your pgf example. It seems to be missing a \usepackage{
dashrule}

The following runs for me but still generates the black non colored bars.
The # Text config seems to do nothing in my test so I'm not sure why you
need to set it.

If I save the pgf backend to a .pgf file and include it in a texfile as
below everything looks correct in that example

test.py

import matplotlib
from matplotlib.backends.backend_pgf import FigureCanvasPgf
matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
from matplotlib import pyplot as plt

matplotlib.rc('pgf', texsystem='pdflatex')  # from running latex -v
preamble = matplotlib.rcParams.setdefault('pgf.preamble', [])
preamble.append(r'\usepackage{color}')
preamble.append(r'\usepackage{dashrule}')

# Text config
#matplotlib.rc('text', usetex=True)
# preamble = matplotlib.rcParams.setdefault('text.latex.preamble', [])
#preamble.append(r'\usepackage{color}')
#preamble.append(r'\usepackage{dashrule}')

ax = plt.plot((0, 1), (1, 2))[0].axes
ax.set_ylabel(r'Y $\;$ \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
ax.set_xlabel(r'N $\;$ \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
plt.savefig('test.pgf')
plt.savefig('test.png')

test.tex

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{color}
\usepackage{dashrule}
\usepackage{pgf}

\begin{document}

\input{test.pgf}
\end{document}

and running pdflatex test.tex generates a test.pdf that looks as expected.

best
Jens

···

On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz <jfoxrabinovitz at gmail.com> wrote:

Have an update on my previous question. I have tried to follow the
instructions at http://matplotlib.org/users/pgf.html for settting up
the PGF backend for PNG and PDF rendering. This method does not work
either:

    import matplotlib as mpl
    from matplotlib.backends.backend_pgf import FigureCanvasPgf
    matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
    from matplotlib import pyplot as plt

    matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
    preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
    preamble.append(r'\usepackage{color}')

    # Text config
    matplotlib.rc('text', usetex=True)
    preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
    preamble.append(r'\usepackage{color}')

    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
    plt.savefig('test.png')

Yields the exact same figure and PNG file with the incorrect black
lines as above. Note that turning off the three lines under `# Text
config` makes the TeX commands print out verbatim, even in the saved
figure. Perhaps there is a way to render the PNG correctly without
pre-clobbering with the text system?

Regards,

    -Joe

On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz > <jfoxrabinovitz at gmail.com> wrote:
> I originally posted to Stack Overflow at
> http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
> SourceForge version of this list).
>
> I am trying to follow the answer at
> Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question of
> mine to create colored and styled legend-like entries. I have the
> following code:
>
> import matplotlib as mpl
> mpl.use('ps')
> from matplotlib import pyplot as plt
>
> mpl.rc('text', usetex=True)
> mpl.rc('text.latex',
preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>
> plt.ion()
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
> plt.savefig('test.ps')
>
> The result is as expected. The labels contain black text with a red
> line on the Y label and a green line on the X label:
> http://i.stack.imgur.com/JCiLI.png.
>
> However, when I try the exact same set of commands without the
> `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
> figure neither saves corectly nor shows up correctly on screen:
>
> import matplotlib as mpl
> from matplotlib import pyplot as plt
>
> mpl.rc('text', usetex=True)
> mpl.rc('text.latex',
preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>
> plt.ion()
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>
> plt.savefig('test.png')
> plt.show()
>
> The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
> `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the same
> in this case. The lines after the text show up black.
>
> How do I get the colors to show up in the labels with the default
> interactive backend?
>
> Regards,
>
> -Joe
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20160711/edf4f130/attachment.html&gt;

Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
1.5, the code you posted does not work as expected. The labels are the
literal strings containing LaTeX commands, not the LaTeX output.
Adding in the commands under `# Text config` fixed at least that part
of the issue. It seems to be caused by the fact that I am using a
non-pgf backend by default.

Regards,

    -Joe

···

On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen <jenshnielsen at gmail.com> wrote:

I can confirm that this does not work as expected but I don't know exactly
why.

With regards to your pgf example. It seems to be missing a
\usepackage{dashrule}

The following runs for me but still generates the black non colored bars.
The # Text config seems to do nothing in my test so I'm not sure why you
need to set it.

If I save the pgf backend to a .pgf file and include it in a texfile as
below everything looks correct in that example

test.py

import matplotlib
from matplotlib.backends.backend_pgf import FigureCanvasPgf
matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
from matplotlib import pyplot as plt

matplotlib.rc('pgf', texsystem='pdflatex')  # from running latex -v
preamble = matplotlib.rcParams.setdefault('pgf.preamble', [])
preamble.append(r'\usepackage{color}')
preamble.append(r'\usepackage{dashrule}')

# Text config
#matplotlib.rc('text', usetex=True)
# preamble = matplotlib.rcParams.setdefault('text.latex.preamble', [])
#preamble.append(r'\usepackage{color}')
#preamble.append(r'\usepackage{dashrule}')

ax = plt.plot((0, 1), (1, 2))[0].axes
ax.set_ylabel(r'Y $\;$ \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
ax.set_xlabel(r'N $\;$ \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
plt.savefig('test.pgf')
plt.savefig('test.png')

test.tex

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{color}
\usepackage{dashrule}
\usepackage{pgf}

\begin{document}

\input{test.pgf}
\end{document}

and running pdflatex test.tex generates a test.pdf that looks as expected.

best
Jens

On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz > <jfoxrabinovitz at gmail.com> wrote:

Have an update on my previous question. I have tried to follow the
instructions at http://matplotlib.org/users/pgf.html for settting up
the PGF backend for PNG and PDF rendering. This method does not work
either:

    import matplotlib as mpl
    from matplotlib.backends.backend_pgf import FigureCanvasPgf
    matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
    from matplotlib import pyplot as plt

    matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
    preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
    preamble.append(r'\usepackage{color}')

    # Text config
    matplotlib.rc('text', usetex=True)
    preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
    preamble.append(r'\usepackage{color}')

    ax = plt.plot((0, 1), (1, 2))[0].axes
    ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
    ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
0.0}{\rule[0.5ex]{3cm}{1pt}}')
    plt.savefig('test.png')

Yields the exact same figure and PNG file with the incorrect black
lines as above. Note that turning off the three lines under `# Text
config` makes the TeX commands print out verbatim, even in the saved
figure. Perhaps there is a way to render the PNG correctly without
pre-clobbering with the text system?

Regards,

    -Joe

On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz >> <jfoxrabinovitz at gmail.com> wrote:
> I originally posted to Stack Overflow at
> http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
> SourceForge version of this list).
>
> I am trying to follow the answer at
> Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question of
> mine to create colored and styled legend-like entries. I have the
> following code:
>
> import matplotlib as mpl
> mpl.use('ps')
> from matplotlib import pyplot as plt
>
> mpl.rc('text', usetex=True)
> mpl.rc('text.latex',
> preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>
> plt.ion()
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
> plt.savefig('test.ps')
>
> The result is as expected. The labels contain black text with a red
> line on the Y label and a green line on the X label:
> http://i.stack.imgur.com/JCiLI.png.
>
> However, when I try the exact same set of commands without the
> `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
> figure neither saves corectly nor shows up correctly on screen:
>
> import matplotlib as mpl
> from matplotlib import pyplot as plt
>
> mpl.rc('text', usetex=True)
> mpl.rc('text.latex',
> preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>
> plt.ion()
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>
> plt.savefig('test.png')
> plt.show()
>
> The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
> `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the same
> in this case. The lines after the text show up black.
>
> How do I get the colors to show up in the labels with the default
> interactive backend?
>
> Regards,
>
> -Joe
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

You are right. I suspect that the register_backend logic does not work
correctly for png. The code produces the expected results
in pdf with register_backend and in both pdf and png if I do
matplotlib.use('pgf')
so it would seem like there are at least 2 different bugs.

The color does not work with the regular latex text backend.

register_backend does not work correctly with png and the pgf backend.

best
Jens

···

On Mon, 11 Jul 2016 at 18:49 Joseph Fox-Rabinovitz <jfoxrabinovitz at gmail.com> wrote:

Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
1.5, the code you posted does not work as expected. The labels are the
literal strings containing LaTeX commands, not the LaTeX output.
Adding in the commands under `# Text config` fixed at least that part
of the issue. It seems to be caused by the fact that I am using a
non-pgf backend by default.

Regards,

    -Joe

On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen <jenshnielsen at gmail.com> > wrote:
> I can confirm that this does not work as expected but I don't know
exactly
> why.
>
> With regards to your pgf example. It seems to be missing a
> \usepackage{dashrule}
>
> The following runs for me but still generates the black non colored bars.
> The # Text config seems to do nothing in my test so I'm not sure why you
> need to set it.
>
> If I save the pgf backend to a .pgf file and include it in a texfile as
> below everything looks correct in that example
>
> test.py
> ```
> import matplotlib
> from matplotlib.backends.backend_pgf import FigureCanvasPgf
> matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
> from matplotlib import pyplot as plt
>
> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
> preamble.append(r'\usepackage{color}')
> preamble.append(r'\usepackage{dashrule}')
>
> # Text config
> #matplotlib.rc('text', usetex=True)
> # preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
> #preamble.append(r'\usepackage{color}')
> #preamble.append(r'\usepackage{dashrule}')
>
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
> plt.savefig('test.pgf')
> plt.savefig('test.png')
> ```
>
> test.tex
> ```
> \documentclass{article}
>
> \usepackage[utf8]{inputenc}
> \usepackage[english]{babel}
>
> \usepackage{color}
> \usepackage{dashrule}
> \usepackage{pgf}
>
> \begin{document}
>
> \input{test.pgf}
> \end{document}
> ```
>
> and running pdflatex test.tex generates a test.pdf that looks as
expected.
>
> best
> Jens
>
>
>
> On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz > > <jfoxrabinovitz at gmail.com> wrote:
>>
>> Have an update on my previous question. I have tried to follow the
>> instructions at http://matplotlib.org/users/pgf.html for settting up
>> the PGF backend for PNG and PDF rendering. This method does not work
>> either:
>>
>> import matplotlib as mpl
>> from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> from matplotlib import pyplot as plt
>>
>> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
>> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> preamble.append(r'\usepackage{color}')
>>
>> # Text config
>> matplotlib.rc('text', usetex=True)
>> preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
>> preamble.append(r'\usepackage{color}')
>>
>> ax = plt.plot((0, 1), (1, 2))[0].axes
>> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> plt.savefig('test.png')
>>
>> Yields the exact same figure and PNG file with the incorrect black
>> lines as above. Note that turning off the three lines under `# Text
>> config` makes the TeX commands print out verbatim, even in the saved
>> figure. Perhaps there is a way to render the PNG correctly without
>> pre-clobbering with the text system?
>>
>> Regards,
>>
>> -Joe
>>
>>
>>
>> On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz > >> <jfoxrabinovitz at gmail.com> wrote:
>> > I originally posted to Stack Overflow at
>> > http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
>> > SourceForge version of this list).
>> >
>> > I am trying to follow the answer at
>> > Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question of
>> > mine to create colored and styled legend-like entries. I have the
>> > following code:
>> >
>> > import matplotlib as mpl
>> > mpl.use('ps')
>> > from matplotlib import pyplot as plt
>> >
>> > mpl.rc('text', usetex=True)
>> > mpl.rc('text.latex',
>> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >
>> > plt.ion()
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> > plt.savefig('test.ps')
>> >
>> > The result is as expected. The labels contain black text with a red
>> > line on the Y label and a green line on the X label:
>> > http://i.stack.imgur.com/JCiLI.png.
>> >
>> > However, when I try the exact same set of commands without the
>> > `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
>> > figure neither saves corectly nor shows up correctly on screen:
>> >
>> > import matplotlib as mpl
>> > from matplotlib import pyplot as plt
>> >
>> > mpl.rc('text', usetex=True)
>> > mpl.rc('text.latex',
>> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >
>> > plt.ion()
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >
>> > plt.savefig('test.png')
>> > plt.show()
>> >
>> > The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
>> > `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the
same
>> > in this case. The lines after the text show up black.
>> >
>> > How do I get the colors to show up in the labels with the default
>> > interactive backend?
>> >
>> > Regards,
>> >
>> > -Joe
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users at python.org
>> Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20160711/ae9004d7/attachment.html&gt;

It seems that for the time being, `use('ps')` is the only way to get
the rendering done correctly. I was hoping to get something that
rendered with partial accuracy in interactive mode while allowing me
to save correctly to a file. Any objections to me filing an issue
about this?

Regards,

    -Joe

···

On Mon, Jul 11, 2016 at 2:55 PM, Jens Nielsen <jenshnielsen at gmail.com> wrote:

You are right. I suspect that the register_backend logic does not work
correctly for png. The code produces the expected results
in pdf with register_backend and in both pdf and png if I do
matplotlib.use('pgf') so it would seem like there are at least 2 different
bugs.

The color does not work with the regular latex text backend.

register_backend does not work correctly with png and the pgf backend.

best
Jens

On Mon, 11 Jul 2016 at 18:49 Joseph Fox-Rabinovitz > <jfoxrabinovitz at gmail.com> wrote:

Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
1.5, the code you posted does not work as expected. The labels are the
literal strings containing LaTeX commands, not the LaTeX output.
Adding in the commands under `# Text config` fixed at least that part
of the issue. It seems to be caused by the fact that I am using a
non-pgf backend by default.

Regards,

    -Joe

On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen <jenshnielsen at gmail.com> >> wrote:
> I can confirm that this does not work as expected but I don't know
> exactly
> why.
>
> With regards to your pgf example. It seems to be missing a
> \usepackage{dashrule}
>
> The following runs for me but still generates the black non colored
> bars.
> The # Text config seems to do nothing in my test so I'm not sure why you
> need to set it.
>
> If I save the pgf backend to a .pgf file and include it in a texfile as
> below everything looks correct in that example
>
> test.py
> ```
> import matplotlib
> from matplotlib.backends.backend_pgf import FigureCanvasPgf
> matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
> from matplotlib import pyplot as plt
>
> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
> preamble.append(r'\usepackage{color}')
> preamble.append(r'\usepackage{dashrule}')
>
> # Text config
> #matplotlib.rc('text', usetex=True)
> # preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
> #preamble.append(r'\usepackage{color}')
> #preamble.append(r'\usepackage{dashrule}')
>
> ax = plt.plot((0, 1), (1, 2))[0].axes
> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
> plt.savefig('test.pgf')
> plt.savefig('test.png')
> ```
>
> test.tex
> ```
> \documentclass{article}
>
> \usepackage[utf8]{inputenc}
> \usepackage[english]{babel}
>
> \usepackage{color}
> \usepackage{dashrule}
> \usepackage{pgf}
>
> \begin{document}
>
> \input{test.pgf}
> \end{document}
> ```
>
> and running pdflatex test.tex generates a test.pdf that looks as
> expected.
>
> best
> Jens
>
>
>
> On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz >> > <jfoxrabinovitz at gmail.com> wrote:
>>
>> Have an update on my previous question. I have tried to follow the
>> instructions at http://matplotlib.org/users/pgf.html for settting up
>> the PGF backend for PNG and PDF rendering. This method does not work
>> either:
>>
>> import matplotlib as mpl
>> from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> from matplotlib import pyplot as plt
>>
>> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
>> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> preamble.append(r'\usepackage{color}')
>>
>> # Text config
>> matplotlib.rc('text', usetex=True)
>> preamble = matplotlib.rcParams.setdefault('text.latex.preamble',
>> )
>> preamble.append(r'\usepackage{color}')
>>
>> ax = plt.plot((0, 1), (1, 2))[0].axes
>> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> plt.savefig('test.png')
>>
>> Yields the exact same figure and PNG file with the incorrect black
>> lines as above. Note that turning off the three lines under `# Text
>> config` makes the TeX commands print out verbatim, even in the saved
>> figure. Perhaps there is a way to render the PNG correctly without
>> pre-clobbering with the text system?
>>
>> Regards,
>>
>> -Joe
>>
>>
>>
>> On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz >> >> <jfoxrabinovitz at gmail.com> wrote:
>> > I originally posted to Stack Overflow at
>> > http://stackoverflow.com/q/38274681/2988730 (and accidentally to the
>> > SourceForge version of this list).
>> >
>> > I am trying to follow the answer at
>> > Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question of
>> > mine to create colored and styled legend-like entries. I have the
>> > following code:
>> >
>> > import matplotlib as mpl
>> > mpl.use('ps')
>> > from matplotlib import pyplot as plt
>> >
>> > mpl.rc('text', usetex=True)
>> > mpl.rc('text.latex',
>> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >
>> > plt.ion()
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> > plt.savefig('test.ps')
>> >
>> > The result is as expected. The labels contain black text with a red
>> > line on the Y label and a green line on the X label:
>> > http://i.stack.imgur.com/JCiLI.png.
>> >
>> > However, when I try the exact same set of commands without the
>> > `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
>> > figure neither saves corectly nor shows up correctly on screen:
>> >
>> > import matplotlib as mpl
>> > from matplotlib import pyplot as plt
>> >
>> > mpl.rc('text', usetex=True)
>> > mpl.rc('text.latex',
>> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >
>> > plt.ion()
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >
>> > plt.savefig('test.png')
>> > plt.show()
>> >
>> > The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png) and
>> > `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the
>> > same
>> > in this case. The lines after the text show up black.
>> >
>> > How do I get the colors to show up in the labels with the default
>> > interactive backend?
>> >
>> > Regards,
>> >
>> > -Joe
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users at python.org
>> Matplotlib-users Info Page

Well pdf from the PGF backend also work as you expect for me

Feel free to open a ticket but note that the latex preample is not
officially supported.

I suspect that the reason setting the color doesn't work is that the
matplotlib default color handling overwrites it
as in this example
http://matplotlib.org/users/usetex.html#usetex-with-unicode that is however
not as easy if you only want to partially color the text

···

On Mon, 11 Jul 2016 at 20:06 Joseph Fox-Rabinovitz <jfoxrabinovitz at gmail.com> wrote:

It seems that for the time being, `use('ps')` is the only way to get
the rendering done correctly. I was hoping to get something that
rendered with partial accuracy in interactive mode while allowing me
to save correctly to a file. Any objections to me filing an issue
about this?

Regards,

    -Joe

On Mon, Jul 11, 2016 at 2:55 PM, Jens Nielsen <jenshnielsen at gmail.com> > wrote:
> You are right. I suspect that the register_backend logic does not work
> correctly for png. The code produces the expected results
> in pdf with register_backend and in both pdf and png if I do
> matplotlib.use('pgf') so it would seem like there are at least 2
different
> bugs.
>
> The color does not work with the regular latex text backend.
>
> register_backend does not work correctly with png and the pgf backend.
>
> best
> Jens
>
>
>
>
> On Mon, 11 Jul 2016 at 18:49 Joseph Fox-Rabinovitz > > <jfoxrabinovitz at gmail.com> wrote:
>>
>> Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
>> 1.5, the code you posted does not work as expected. The labels are the
>> literal strings containing LaTeX commands, not the LaTeX output.
>> Adding in the commands under `# Text config` fixed at least that part
>> of the issue. It seems to be caused by the fact that I am using a
>> non-pgf backend by default.
>>
>> Regards,
>>
>> -Joe
>>
>>
>>
>> On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen <jenshnielsen at gmail.com> > >> wrote:
>> > I can confirm that this does not work as expected but I don't know
>> > exactly
>> > why.
>> >
>> > With regards to your pgf example. It seems to be missing a
>> > \usepackage{dashrule}
>> >
>> > The following runs for me but still generates the black non colored
>> > bars.
>> > The # Text config seems to do nothing in my test so I'm not sure why
you
>> > need to set it.
>> >
>> > If I save the pgf backend to a .pgf file and include it in a texfile
as
>> > below everything looks correct in that example
>> >
>> > test.py
>> > ```
>> > import matplotlib
>> > from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> > matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> > from matplotlib import pyplot as plt
>> >
>> > matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
>> > preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> > preamble.append(r'\usepackage{color}')
>> > preamble.append(r'\usepackage{dashrule}')
>> >
>> > # Text config
>> > #matplotlib.rc('text', usetex=True)
>> > # preamble = matplotlib.rcParams.setdefault('text.latex.preamble', )
>> > #preamble.append(r'\usepackage{color}')
>> > #preamble.append(r'\usepackage{dashrule}')
>> >
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> > plt.savefig('test.pgf')
>> > plt.savefig('test.png')
>> > ```
>> >
>> > test.tex
>> > ```
>> > \documentclass{article}
>> >
>> > \usepackage[utf8]{inputenc}
>> > \usepackage[english]{babel}
>> >
>> > \usepackage{color}
>> > \usepackage{dashrule}
>> > \usepackage{pgf}
>> >
>> > \begin{document}
>> >
>> > \input{test.pgf}
>> > \end{document}
>> > ```
>> >
>> > and running pdflatex test.tex generates a test.pdf that looks as
>> > expected.
>> >
>> > best
>> > Jens
>> >
>> >
>> >
>> > On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz > >> > <jfoxrabinovitz at gmail.com> wrote:
>> >>
>> >> Have an update on my previous question. I have tried to follow the
>> >> instructions at http://matplotlib.org/users/pgf.html for settting up
>> >> the PGF backend for PNG and PDF rendering. This method does not work
>> >> either:
>> >>
>> >> import matplotlib as mpl
>> >> from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> >> matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> >> from matplotlib import pyplot as plt
>> >>
>> >> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex
-v
>> >> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> >> preamble.append(r'\usepackage{color}')
>> >>
>> >> # Text config
>> >> matplotlib.rc('text', usetex=True)
>> >> preamble = matplotlib.rcParams.setdefault('text.latex.preamble',
>> >> )
>> >> preamble.append(r'\usepackage{color}')
>> >>
>> >> ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> plt.savefig('test.png')
>> >>
>> >> Yields the exact same figure and PNG file with the incorrect black
>> >> lines as above. Note that turning off the three lines under `# Text
>> >> config` makes the TeX commands print out verbatim, even in the saved
>> >> figure. Perhaps there is a way to render the PNG correctly without
>> >> pre-clobbering with the text system?
>> >>
>> >> Regards,
>> >>
>> >> -Joe
>> >>
>> >>
>> >>
>> >> On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz > >> >> <jfoxrabinovitz at gmail.com> wrote:
>> >> > I originally posted to Stack Overflow at
>> >> > http://stackoverflow.com/q/38274681/2988730 (and accidentally to
the
>> >> > SourceForge version of this list).
>> >> >
>> >> > I am trying to follow the answer at
>> >> > Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier
question of
>> >> > mine to create colored and styled legend-like entries. I have the
>> >> > following code:
>> >> >
>> >> > import matplotlib as mpl
>> >> > mpl.use('ps')
>> >> > from matplotlib import pyplot as plt
>> >> >
>> >> > mpl.rc('text', usetex=True)
>> >> > mpl.rc('text.latex',
>> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >
>> >> > plt.ion()
>> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> > plt.savefig('test.ps')
>> >> >
>> >> > The result is as expected. The labels contain black text with a red
>> >> > line on the Y label and a green line on the X label:
>> >> > http://i.stack.imgur.com/JCiLI.png.
>> >> >
>> >> > However, when I try the exact same set of commands without the
>> >> > `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
>> >> > figure neither saves corectly nor shows up correctly on screen:
>> >> >
>> >> > import matplotlib as mpl
>> >> > from matplotlib import pyplot as plt
>> >> >
>> >> > mpl.rc('text', usetex=True)
>> >> > mpl.rc('text.latex',
>> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >
>> >> > plt.ion()
>> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> >
>> >> > plt.savefig('test.png')
>> >> > plt.show()
>> >> >
>> >> > The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png)
and
>> >> > `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the
>> >> > same
>> >> > in this case. The lines after the text show up black.
>> >> >
>> >> > How do I get the colors to show up in the labels with the default
>> >> > interactive backend?
>> >> >
>> >> > Regards,
>> >> >
>> >> > -Joe
>> >> _______________________________________________
>> >> Matplotlib-users mailing list
>> >> Matplotlib-users at python.org
>> >> Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20160711/1e07370e/attachment.html&gt;

I will put in a ticket shortly. I noticed that text latex preamble is
not supported according to the docs, but there is nothing about pgf
latex preamble. Perhaps the docs need to be updated there as well?
Either way, I don't think the issue is with the preamble at all, since
that seems to be importing the requested packages as expected. I think
the unicode link you posted has bearing on the issue, but I have not
experimented enough yet to know exactly how.

Thanks,

    -Joe

···

On Mon, Jul 11, 2016 at 3:19 PM, Jens Nielsen <jenshnielsen at gmail.com> wrote:

Well pdf from the PGF backend also work as you expect for me

Feel free to open a ticket but note that the latex preample is not
officially supported.

I suspect that the reason setting the color doesn't work is that the
matplotlib default color handling overwrites it
as in this example
http://matplotlib.org/users/usetex.html#usetex-with-unicode that is however
not as easy if you only want to partially color the text

On Mon, 11 Jul 2016 at 20:06 Joseph Fox-Rabinovitz > <jfoxrabinovitz at gmail.com> wrote:

It seems that for the time being, `use('ps')` is the only way to get
the rendering done correctly. I was hoping to get something that
rendered with partial accuracy in interactive mode while allowing me
to save correctly to a file. Any objections to me filing an issue
about this?

Regards,

    -Joe

On Mon, Jul 11, 2016 at 2:55 PM, Jens Nielsen <jenshnielsen at gmail.com> >> wrote:
> You are right. I suspect that the register_backend logic does not work
> correctly for png. The code produces the expected results
> in pdf with register_backend and in both pdf and png if I do
> matplotlib.use('pgf') so it would seem like there are at least 2
> different
> bugs.
>
> The color does not work with the regular latex text backend.
>
> register_backend does not work correctly with png and the pgf backend.
>
> best
> Jens
>
>
>
>
> On Mon, 11 Jul 2016 at 18:49 Joseph Fox-Rabinovitz >> > <jfoxrabinovitz at gmail.com> wrote:
>>
>> Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
>> 1.5, the code you posted does not work as expected. The labels are the
>> literal strings containing LaTeX commands, not the LaTeX output.
>> Adding in the commands under `# Text config` fixed at least that part
>> of the issue. It seems to be caused by the fact that I am using a
>> non-pgf backend by default.
>>
>> Regards,
>>
>> -Joe
>>
>>
>>
>> On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen <jenshnielsen at gmail.com> >> >> wrote:
>> > I can confirm that this does not work as expected but I don't know
>> > exactly
>> > why.
>> >
>> > With regards to your pgf example. It seems to be missing a
>> > \usepackage{dashrule}
>> >
>> > The following runs for me but still generates the black non colored
>> > bars.
>> > The # Text config seems to do nothing in my test so I'm not sure why
>> > you
>> > need to set it.
>> >
>> > If I save the pgf backend to a .pgf file and include it in a texfile
>> > as
>> > below everything looks correct in that example
>> >
>> > test.py
>> > ```
>> > import matplotlib
>> > from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> > matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> > from matplotlib import pyplot as plt
>> >
>> > matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
>> > preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> > preamble.append(r'\usepackage{color}')
>> > preamble.append(r'\usepackage{dashrule}')
>> >
>> > # Text config
>> > #matplotlib.rc('text', usetex=True)
>> > # preamble = matplotlib.rcParams.setdefault('text.latex.preamble',
>> > )
>> > #preamble.append(r'\usepackage{color}')
>> > #preamble.append(r'\usepackage{dashrule}')
>> >
>> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> > plt.savefig('test.pgf')
>> > plt.savefig('test.png')
>> > ```
>> >
>> > test.tex
>> > ```
>> > \documentclass{article}
>> >
>> > \usepackage[utf8]{inputenc}
>> > \usepackage[english]{babel}
>> >
>> > \usepackage{color}
>> > \usepackage{dashrule}
>> > \usepackage{pgf}
>> >
>> > \begin{document}
>> >
>> > \input{test.pgf}
>> > \end{document}
>> > ```
>> >
>> > and running pdflatex test.tex generates a test.pdf that looks as
>> > expected.
>> >
>> > best
>> > Jens
>> >
>> >
>> >
>> > On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz >> >> > <jfoxrabinovitz at gmail.com> wrote:
>> >>
>> >> Have an update on my previous question. I have tried to follow the
>> >> instructions at http://matplotlib.org/users/pgf.html for settting up
>> >> the PGF backend for PNG and PDF rendering. This method does not work
>> >> either:
>> >>
>> >> import matplotlib as mpl
>> >> from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> >> matplotlib.backend_bases.register_backend('png',
>> >> FigureCanvasPgf)
>> >> from matplotlib import pyplot as plt
>> >>
>> >> matplotlib.rc('pgf', texsystem='pdflatex') # from running latex
>> >> -v
>> >> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> >> preamble.append(r'\usepackage{color}')
>> >>
>> >> # Text config
>> >> matplotlib.rc('text', usetex=True)
>> >> preamble = matplotlib.rcParams.setdefault('text.latex.preamble',
>> >> )
>> >> preamble.append(r'\usepackage{color}')
>> >>
>> >> ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> plt.savefig('test.png')
>> >>
>> >> Yields the exact same figure and PNG file with the incorrect black
>> >> lines as above. Note that turning off the three lines under `# Text
>> >> config` makes the TeX commands print out verbatim, even in the saved
>> >> figure. Perhaps there is a way to render the PNG correctly without
>> >> pre-clobbering with the text system?
>> >>
>> >> Regards,
>> >>
>> >> -Joe
>> >>
>> >>
>> >>
>> >> On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz >> >> >> <jfoxrabinovitz at gmail.com> wrote:
>> >> > I originally posted to Stack Overflow at
>> >> > http://stackoverflow.com/q/38274681/2988730 (and accidentally to
>> >> > the
>> >> > SourceForge version of this list).
>> >> >
>> >> > I am trying to follow the answer at
>> >> > Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier question
>> >> > of
>> >> > mine to create colored and styled legend-like entries. I have the
>> >> > following code:
>> >> >
>> >> > import matplotlib as mpl
>> >> > mpl.use('ps')
>> >> > from matplotlib import pyplot as plt
>> >> >
>> >> > mpl.rc('text', usetex=True)
>> >> > mpl.rc('text.latex',
>> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >
>> >> > plt.ion()
>> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> > plt.savefig('test.ps')
>> >> >
>> >> > The result is as expected. The labels contain black text with a
>> >> > red
>> >> > line on the Y label and a green line on the X label:
>> >> > http://i.stack.imgur.com/JCiLI.png.
>> >> >
>> >> > However, when I try the exact same set of commands without the
>> >> > `mpl.use('ps')` line (using `'qt4agg'` backend on my system), the
>> >> > figure neither saves corectly nor shows up correctly on screen:
>> >> >
>> >> > import matplotlib as mpl
>> >> > from matplotlib import pyplot as plt
>> >> >
>> >> > mpl.rc('text', usetex=True)
>> >> > mpl.rc('text.latex',
>> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >
>> >> > plt.ion()
>> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> >
>> >> > plt.savefig('test.png')
>> >> > plt.show()
>> >> >
>> >> > The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png)
>> >> > and
>> >> > `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically the
>> >> > same
>> >> > in this case. The lines after the text show up black.
>> >> >
>> >> > How do I get the colors to show up in the labels with the default
>> >> > interactive backend?
>> >> >
>> >> > Regards,
>> >> >
>> >> > -Joe
>> >> _______________________________________________
>> >> Matplotlib-users mailing list
>> >> Matplotlib-users at python.org
>> >> Matplotlib-users Info Page

As I said I think there are 2 different issues and I don't think the PGF
issue has anything todo with the preamble, the problem is that setting the
pgf backend via registre_backend is ignored for png (but not for pdf) using
matplotlib.use('pgf') and it seems to work as expected.

The other issus not related to pgf is indirectly with the preamble because
part of the preamble (what has to do with color is ignored on purpose to
support the build in matplotlib text coloring)

···

On Mon, 11 Jul 2016 at 20:37 Joseph Fox-Rabinovitz <jfoxrabinovitz at gmail.com> wrote:

I will put in a ticket shortly. I noticed that text latex preamble is
not supported according to the docs, but there is nothing about pgf
latex preamble. Perhaps the docs need to be updated there as well?
Either way, I don't think the issue is with the preamble at all, since
that seems to be importing the requested packages as expected. I think
the unicode link you posted has bearing on the issue, but I have not
experimented enough yet to know exactly how.

Thanks,

    -Joe

On Mon, Jul 11, 2016 at 3:19 PM, Jens Nielsen <jenshnielsen at gmail.com> > wrote:
> Well pdf from the PGF backend also work as you expect for me
>
> Feel free to open a ticket but note that the latex preample is not
> officially supported.
>
> I suspect that the reason setting the color doesn't work is that the
> matplotlib default color handling overwrites it
> as in this example
> http://matplotlib.org/users/usetex.html#usetex-with-unicode that is
however
> not as easy if you only want to partially color the text
>
>
>
>
> On Mon, 11 Jul 2016 at 20:06 Joseph Fox-Rabinovitz > > <jfoxrabinovitz at gmail.com> wrote:
>>
>> It seems that for the time being, `use('ps')` is the only way to get
>> the rendering done correctly. I was hoping to get something that
>> rendered with partial accuracy in interactive mode while allowing me
>> to save correctly to a file. Any objections to me filing an issue
>> about this?
>>
>> Regards,
>>
>> -Joe
>>
>>
>> On Mon, Jul 11, 2016 at 2:55 PM, Jens Nielsen <jenshnielsen at gmail.com> > >> wrote:
>> > You are right. I suspect that the register_backend logic does not work
>> > correctly for png. The code produces the expected results
>> > in pdf with register_backend and in both pdf and png if I do
>> > matplotlib.use('pgf') so it would seem like there are at least 2
>> > different
>> > bugs.
>> >
>> > The color does not work with the regular latex text backend.
>> >
>> > register_backend does not work correctly with png and the pgf backend.
>> >
>> > best
>> > Jens
>> >
>> >
>> >
>> >
>> > On Mon, 11 Jul 2016 at 18:49 Joseph Fox-Rabinovitz > >> > <jfoxrabinovitz at gmail.com> wrote:
>> >>
>> >> Thanks for the catch with `\usepackage{dashrule}`. Using matplotlib
>> >> 1.5, the code you posted does not work as expected. The labels are
the
>> >> literal strings containing LaTeX commands, not the LaTeX output.
>> >> Adding in the commands under `# Text config` fixed at least that part
>> >> of the issue. It seems to be caused by the fact that I am using a
>> >> non-pgf backend by default.
>> >>
>> >> Regards,
>> >>
>> >> -Joe
>> >>
>> >>
>> >>
>> >> On Mon, Jul 11, 2016 at 12:35 PM, Jens Nielsen < > jenshnielsen at gmail.com> > >> >> wrote:
>> >> > I can confirm that this does not work as expected but I don't know
>> >> > exactly
>> >> > why.
>> >> >
>> >> > With regards to your pgf example. It seems to be missing a
>> >> > \usepackage{dashrule}
>> >> >
>> >> > The following runs for me but still generates the black non colored
>> >> > bars.
>> >> > The # Text config seems to do nothing in my test so I'm not sure
why
>> >> > you
>> >> > need to set it.
>> >> >
>> >> > If I save the pgf backend to a .pgf file and include it in a
texfile
>> >> > as
>> >> > below everything looks correct in that example
>> >> >
>> >> > test.py
>> >> > ```
>> >> > import matplotlib
>> >> > from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> >> > matplotlib.backend_bases.register_backend('png', FigureCanvasPgf)
>> >> > from matplotlib import pyplot as plt
>> >> >
>> >> > matplotlib.rc('pgf', texsystem='pdflatex') # from running latex -v
>> >> > preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> >> > preamble.append(r'\usepackage{color}')
>> >> > preamble.append(r'\usepackage{dashrule}')
>> >> >
>> >> > # Text config
>> >> > #matplotlib.rc('text', usetex=True)
>> >> > # preamble = matplotlib.rcParams.setdefault('text.latex.preamble',
>> >> > )
>> >> > #preamble.append(r'\usepackage{color}')
>> >> > #preamble.append(r'\usepackage{dashrule}')
>> >> >
>> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> > plt.savefig('test.pgf')
>> >> > plt.savefig('test.png')
>> >> > ```
>> >> >
>> >> > test.tex
>> >> > ```
>> >> > \documentclass{article}
>> >> >
>> >> > \usepackage[utf8]{inputenc}
>> >> > \usepackage[english]{babel}
>> >> >
>> >> > \usepackage{color}
>> >> > \usepackage{dashrule}
>> >> > \usepackage{pgf}
>> >> >
>> >> > \begin{document}
>> >> >
>> >> > \input{test.pgf}
>> >> > \end{document}
>> >> > ```
>> >> >
>> >> > and running pdflatex test.tex generates a test.pdf that looks as
>> >> > expected.
>> >> >
>> >> > best
>> >> > Jens
>> >> >
>> >> >
>> >> >
>> >> > On Mon, 11 Jul 2016 at 17:08 Joseph Fox-Rabinovitz > >> >> > <jfoxrabinovitz at gmail.com> wrote:
>> >> >>
>> >> >> Have an update on my previous question. I have tried to follow the
>> >> >> instructions at http://matplotlib.org/users/pgf.html for
settting up
>> >> >> the PGF backend for PNG and PDF rendering. This method does not
work
>> >> >> either:
>> >> >>
>> >> >> import matplotlib as mpl
>> >> >> from matplotlib.backends.backend_pgf import FigureCanvasPgf
>> >> >> matplotlib.backend_bases.register_backend('png',
>> >> >> FigureCanvasPgf)
>> >> >> from matplotlib import pyplot as plt
>> >> >>
>> >> >> matplotlib.rc('pgf', texsystem='pdflatex') # from running
latex
>> >> >> -v
>> >> >> preamble = matplotlib.rcParams.setdefault('pgf.preamble', )
>> >> >> preamble.append(r'\usepackage{color}')
>> >> >>
>> >> >> # Text config
>> >> >> matplotlib.rc('text', usetex=True)
>> >> >> preamble =
matplotlib.rcParams.setdefault('text.latex.preamble',
>> >> >> )
>> >> >> preamble.append(r'\usepackage{color}')
>> >> >>
>> >> >> ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> >> ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> >> 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> >> ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> >> 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> >> plt.savefig('test.png')
>> >> >>
>> >> >> Yields the exact same figure and PNG file with the incorrect black
>> >> >> lines as above. Note that turning off the three lines under `#
Text
>> >> >> config` makes the TeX commands print out verbatim, even in the
saved
>> >> >> figure. Perhaps there is a way to render the PNG correctly without
>> >> >> pre-clobbering with the text system?
>> >> >>
>> >> >> Regards,
>> >> >>
>> >> >> -Joe
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Mon, Jul 11, 2016 at 11:12 AM, Joseph Fox-Rabinovitz > >> >> >> <jfoxrabinovitz at gmail.com> wrote:
>> >> >> > I originally posted to Stack Overflow at
>> >> >> > http://stackoverflow.com/q/38274681/2988730 (and accidentally
to
>> >> >> > the
>> >> >> > SourceForge version of this list).
>> >> >> >
>> >> >> > I am trying to follow the answer at
>> >> >> > Rotating legend or adding patch to axis label in matplotlib - Stack Overflow to an earlier
question
>> >> >> > of
>> >> >> > mine to create colored and styled legend-like entries. I have
the
>> >> >> > following code:
>> >> >> >
>> >> >> > import matplotlib as mpl
>> >> >> > mpl.use('ps')
>> >> >> > from matplotlib import pyplot as plt
>> >> >> >
>> >> >> > mpl.rc('text', usetex=True)
>> >> >> > mpl.rc('text.latex',
>> >> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >> >
>> >> >> > plt.ion()
>> >> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> >> > plt.savefig('test.ps')
>> >> >> >
>> >> >> > The result is as expected. The labels contain black text with a
>> >> >> > red
>> >> >> > line on the Y label and a green line on the X label:
>> >> >> > http://i.stack.imgur.com/JCiLI.png.
>> >> >> >
>> >> >> > However, when I try the exact same set of commands without the
>> >> >> > `mpl.use('ps')` line (using `'qt4agg'` backend on my system),
the
>> >> >> > figure neither saves corectly nor shows up correctly on screen:
>> >> >> >
>> >> >> > import matplotlib as mpl
>> >> >> > from matplotlib import pyplot as plt
>> >> >> >
>> >> >> > mpl.rc('text', usetex=True)
>> >> >> > mpl.rc('text.latex',
>> >> >> > preamble='\\usepackage{color}\n\\usepackage{dashrule}')
>> >> >> >
>> >> >> > plt.ion()
>> >> >> > ax = plt.plot((0, 1), (1, 2))[0].axes
>> >> >> > ax.set_ylabel(r'Y \\; \textcolor[rgb]{1.0, 0.0,
>> >> >> > 0.0}{\hdashrule[0.5ex]{3cm}{1pt}{1pt 0pt}}')
>> >> >> > ax.set_xlabel(r'N \\; \textcolor[rgb]{0.0, 1.0,
>> >> >> > 0.0}{\rule[0.5ex]{3cm}{1pt}}')
>> >> >> >
>> >> >> > plt.savefig('test.png')
>> >> >> > plt.show()
>> >> >> >
>> >> >> > The result of `plt.savefig` (http://i.stack.imgur.com/h2LXn.png
)
>> >> >> > and
>> >> >> > `plt.show` (http://i.stack.imgur.com/0Ow7c.png) are basically
the
>> >> >> > same
>> >> >> > in this case. The lines after the text show up black.
>> >> >> >
>> >> >> > How do I get the colors to show up in the labels with the
default
>> >> >> > interactive backend?
>> >> >> >
>> >> >> > Regards,
>> >> >> >
>> >> >> > -Joe
>> >> >> _______________________________________________
>> >> >> Matplotlib-users mailing list
>> >> >> Matplotlib-users at python.org
>> >> >> Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20160711/01acc3fd/attachment-0001.html&gt;