Loading...

matplotlib-users@lists.sourceforge.net

[Prev] Thread [Next]  |  [Prev] Date [Next]

Re: [Matplotlib-users] Display chinese labels sunqiang Tue Oct 12 20:00:19 2010

oh, only test it on Windows yet.  both "sim hei"and "microsoft yahei"
are fontname on Windows Platform.
maybe just copy "Sim Hei" to font directory is not enough? no clue here.

I just test the script on Linux (Ubuntu 8.04, Python 2.5, matplotlib
0.98.4) with the follow steps:
1, find the configure directory of matplotlib
import matplotlib as mpl
mpl.get_configdir()

return "~/.matplotlib"
2, in the configure directory, there is a file "fontList.cache"
I find this
(dp294
...
S'WenQuanYi Zen Hei'
...
S'/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf'
...

I just know WenQuanYi is a "Chinese font"
http://packages.ubuntu.com/hardy/ttf-wqy-zenhei
3, replace "Sim Hei" in your original script with "WenQuanYi Zen Hei",
now it can display Chinese.
both methods still work(embed fontname argument, or set
mpl.rcParams['font.sans-serif'])

maybe you can find a font that support Chinese character on your
platform with these steps and try again?

On Tue, Oct 12, 2010 at 10:41 PM, Benoit Gaillard
<[EMAIL PROTECTED]> wrote:
> Thank you for your help,
>
> but it does not seem to work.
>
> I have downloaded simhei fonts and added it in my directory
> /usr/shared/fonts/truetype but even by using
> """fontname="simhei" """,
> or:
> """mpl.rcParams['font.sans-serif'] = ['SimHei']
> mpl.rcParams['axes.unicode_minus'] = False """
>
> i still display empty boxes instead of chinese characters.
>
> It is worth noting that these chinese characters print well on the console
> if i add the line:
> """for ytic in ytics:
>    print ytic"""
>
> Unfortunately, apart from copying lines of code, i cannot do much with the
> blog you mention, as i don't understand what is written in it.
>
> @Mike: "monospace" family is one that enables me to display accents of
> french words, for the xticks. "fantasy" family was the last family i tried
> for the chinese labels, but to no success.
>
> So, has anyone managed to do it? Is there something i am missing?,
>
> regards,
>
> Benoit.
>
> Quoting sunqiang <[EMAIL PROTECTED]>:
>
>> maybe change the line
>> """axim.set_yticklabels(ytics,fontsize=15,family='fantasy')""" to
>> """axim.set_yticklabels(ytics,fontsize=15, fontname= "simsun (founder
>> extended)")"""
>> (or replace fontname with "simhei" or "microsoft yahei") is enough.
>>
>>
>> or, put these two lines:
>> mpl.rcParams['font.sans-serif'] = ['SimHei']
>> mpl.rcParams['axes.unicode_minus'] = False
>>
>> there is a Chinese blog (not mine) maybe worth  reading:
>> http://hi.baidu.com/lijiangshui/blog/item/a0aad703cd65ee7e3812bb49.html
>>
>> hope this help
>>
>> On Mon, Oct 11, 2010 at 3:13 AM, Benoit Gaillard
>> <[EMAIL PROTECTED]> wrote:
>>>
>>> Hi,
>>>
>>> How can one display Mandarin labels in a plot, as yticks_labels for
>>> example?
>>> It looks to me that there is no font in matplotlib that can display
>>> Chinese
>>> characters? I can display accentuation from 'utf8' but i could not find a
>>> font family that would display Chinese characters.
>>>
>>> Here is an example of plot that displays empty boxes instead of Chinese
>>> characters. In comments you can see various failed attempts:
>>>
>>> import matplotlib as mpl
>>> from matplotlib import cm
>>> from matplotlib import rc
>>> #rc('font',**{'family':'sans-serif','sans-serif':['SimHei','Arial']})
>>> #mpl.rcParams['font.sans-serif'] = ['SimHei','Arial']
>>> import matplotlib.pyplot as plt
>>>
>>> matrix=[[skey+tkey for skey in [1,2]] for tkey in [1,2]]
>>> fig = plt.figure()
>>> axim = fig.add_subplot(111)
>>> #ytics: caractères chinois en utf8
>>> ytics=['\xe6\x8a\xb1'.decode('utf8'),'\xe6\x93\x81'.decode('utf8')]
>>> xtics=['d\xc3\xa9bo\xc3\xaeter'.decode('utf8'),'diviser'.decode('utf8')]
>>> axim.imshow(matrix, cmap=cm.jet, interpolation='nearest',origin='lower')
>>> axim.set_xticks(range(2))
>>>
>>> axim.set_xticklabels(xtics,fontsize=15,rotation=25,ha='right',family='monospace')
>>> axim.set_yticks(range(2))
>>> axim.set_yticklabels(ytics,fontsize=15,family='fantasy')#,fontname='AR PL
>>> ungtiL GB')
>>> plt.show()
>>>
>>> Thank you for your help,
>>>
>>> Benoit
>>>
>>>
>>>
>>> ----------------------------------------------------------------
>>> This message was sent using IMP, the Internet Messaging Program.
>>>
>>>
>>> Hi,
>>>
>>> How can one display mandarin labels in a plot, as yticks_labels for
>>> example?
>>> It looks to me that there is no font in matplotlib that can display
>>> chinese
>>> characters? I can display accentuation from 'utf8' but i could not find a
>>> font family that would display chinese characters.
>>>
>>> Here is an example of plot that displays empty boxes instead of chinese
>>> characters. In comment you can see various failed attempts:
>>>
>>> import matplotlib as mpl
>>> from matplotlib import cm
>>> from matplotlib import rc
>>> #rc('font',**{'family':'sans-serif','sans-serif':['SimHei','Arial']})
>>> #mpl.rcParams['font.sans-serif'] = ['SimHei','Arial']
>>> import matplotlib.pyplot as plt
>>>
>>>     matrix=[[skey+tkey for skey in [1,2]] for tkey in [1,2]]
>>>     fig = plt.figure()
>>>     axim = fig.add_subplot(111)
>>>     #ytics: caractères chinois en utf8
>>>     ytics=['\xe6\x8a\xb1'.decode('utf8'),'\xe6\x93\x81'.decode('utf8')]
>>>
>>> xtics=['d\xc3\xa9bo\xc3\xaeter'.decode('utf8'),'diviser'.decode('utf8')]
>>>     axim.imshow(matrix, cmap=cm.jet, interpolation='nearest',
>>> origin='lower')
>>>     axim.set_xticks(range(2))
>>>     axim.set_xticklabels(xtics,
>>> fontsize=15,rotation=25,ha='right',family='monospace')
>>>     axim.set_yticks(range(2))
>>>
>>> axim.set_yticklabels(ytics,fontsize=15,family='fantasy')#,fontname='AR
>>> PL SungtiL GB')
>>>     plt.show()
>>>
>>> Thank you for your help,
>>>
>>> Benoit
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Beautiful is writing same markup. Internet Explorer 9 supports
>>> standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
>>> Spend less time writing and  rewriting code and more time creating great
>>> experiences on the web. Be a part of the beta today.
>>> http://p.sf.net/sfu/beautyoftheweb
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> [EMAIL PROTECTED]
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>
>>>
>>
>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Matplotlib-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users