|
From: Peter B. <pet...@ca...> - 2013-08-23 16:02:57
|
On 08/23/2013 11:31 AM, Benjamin Root wrote:
>
> On Fri, Aug 23, 2013 at 11:21 AM, Peter Bloomfield
> <pet...@ca... <mailto:pet...@ca...>> wrote:
>
>
> On 08/23/2013 10:43 AM, Benjamin Root wrote:
>>
>>
>> On Fri, Aug 23, 2013 at 9:57 AM, Peter Bloomfield
>> <pet...@ca...
>> <mailto:pet...@ca...>> wrote:
>>
>> Good morning,
>>
>> I am running openSuSE 12.2, and this morning I upgraded
>> matplotlib to v1.3, and now I am having a problem with suptitle.
>> I use the following lines to put a title and legend onto a
>> plot figure
>>
>> import matplotlib.pyplot as plt
>>
>> plt.figure(1)
>>
>> plt.suptitle( "Study# : " + os.path.basename(
>> inImage_IO.IO_FileName ) + \
>>
>> "\n" + "{ Acquired : " + \
>>
>> AcqDateTime.strftime( "%b %d, %Y - $T_o$ @ %H:%M:%S" ) + " }", \
>>
>> y=0.98, weight="roman", size="large" )
>>
>> plt.suptitle( "{Creation Date : " + AnalysisTOD + "}",
>>
>> x=0.86, y=0.03, weight="roman", size="x-small" )
>>
>>
>> Under v1.3, I only get the 'Creation Date : ...' text at the
>> bottom of the figure the 'Study# ...' string is not present
>> at the top. If I change
>> it to
>>
>> import matplotlib.pyplot as plt
>>
>> plt.figure(1)
>>
>> plt.suptitle( "Study# : ", y=0.98, weight="roman", size="large" )
>>
>> plt.suptitle( "{Creation Date : " + AnalysisTOD + "}",
>>
>> x=0.86, y=0.03, weight="roman", size="x-small" )
>>
>> the 'Creation Date : ...' text at the bottom of the figure
>> the 'Study# : ' string is at the top.
>>
>>
>> So the problem is in the string construct in the first
>> example. Does anybody know of a way to get around this?
>>
>>
>> Thanks in advance
>>
>>
>> Peter
>>
>>
>> Oh, wow... we didn't think anybody was using that "misfeature".
>> This was a bug we fixed for 1.3, in that users complained that
>> calling plt.title() would update an existing title, but
>> plt.suptitle() would not (multiple calls would just result in
>> text overlaid on top of each other). We fixed this for 1.3 so
>> that there is a single text object that is kept and is revised in
>> subsequent calls to suptitle(). To get what you want, you will
>> have to consolidate those strings into one.
>>
>> Cheers!
>> Ben
>>
> Thanks for getting back to me, but I have tried to do as you
> suggest, but to no avail, and here I apologise for my lack of
> knowledge of python/matplotlib.
> I consolidated the strings into one, titleStr
>
> titleStr = "Study# : " + os.path.basename(
> inImage_IO.IO_FileName ) + \
>
> "\n" + "{ Acquired : " + \
> AcqDateTime.strftime( "%b %d, %Y - $T_o$ @
> %H:%M:%S" ) + " }"
> plt.suptitle( titleStr, y=0.98, weight="roman", size="large" )
>
> which should write the string
> 'Study# : Pos9.img\n{ Acquired : Feb 18, 2003 - $T_o$ @
> 14:55:02 }'
> at the top of the figure, but it did not, so I thought it is the
> "\n", and tried
>
> titleStr = "Study# : " + os.path.basename(
> inImage_IO.IO_FileName )
> plt.suptitle( titleStr, y=0.98, weight="roman", size="large" )
>
> which should write the string
> 'Study# : Pos9.img'
> and this again failed to write the suptitle in the figure.
>
> Am I being dumb (rhetorical)? What is the best way to consolidate
> the strings to work with suptitle, many thanks in advance.
>
> Cheers
>
> Peter
>
>
> No issues here. Let's try simplifying it further and further. Try
> the following script.
>
> import matplotlib.pyplot as plt
> plt.suptitle("Study# : Pos9.img")
> plt.show()
>
> Does that work for you? If it does, iterate on that code example,
> adding pieces back into it and see when it breaks.
>
> Ben Root
The example works, and changing it to
import matplotlib.pyplot as plt
plt.suptitle( "Study# : Pos9.img\n{ Acquired : Feb 18, 2003 - $T_o$ @
14:55:02 }")
plt.show()
also works.
Though now, I need to apologise, in my original email I should have
added that I am using
from matplotlib.backends.backend_pdf import PdfPages
to write a pdf file of the save the figure.
I extended the example to a small script
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
PDF_Filename = "Test.pdf"
OutPDF = PdfPages( PDF_Filename )
plt.suptitle("Study# : Pos9.img\n{ Acquired : Feb 18, 2003 - $T_o$
@ 14:55:02 }")
plt.savefig( OutPDF, dpi=600, format="pdf" )
OutPDF.close()
and this also works, the text is now written correctly in Test.pdf.
However, if I add a second call to plt.suptitle in the script the text
added from the first call is removed, which is what was refered to in
the first response.
Cheers
Peter
|