Chinaunix

标题: [求助] chartdir for perl 如何能够让生成的图片里面正确显示中文? [打印本页]

作者: YTHTdeWo    时间: 2008-03-23 11:59
标题: [求助] chartdir for perl 如何能够让生成的图片里面正确显示中文?
代码如下:

#!/usr/bin/perl -w
use strict;
use perlchartdir;

# The data for the line chart
my $data = [30, 28, 40, 55, 75, 68, 54, 60, 50, 62, 75, 65, 75, 91, 60, 55, 53, 35,
    50, 66, 56, 48, 52, 65, 62];

# The labels for the line chart
my $labels = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
    "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"];

# Create a XYChart object of size 250 x 250 pixels
my $c = new XYChart(300, 300);

# Set the plotarea at (30, 20) and of size 200 x 200 pixels
$c->setPlotArea(50, 50, 200, 200);

# Add a line chart layer using the given data
$c->addLineLayer($data);

# Set the labels on the x axis.
$c->xAxis()->setLabels($labels);

# Display 1 out of 3 labels on the x-axis.
$c->xAxis()->setLabelStep(3);

$c->xAxis()->setTitle("X:中文X轴");
$c->yAxis()->setTitle("Y:中文Y轴");

# output the chart
$c->makeChart("s1.png")

生成的结果见附件~

我用的是windows xp系统.
我试着加过
$c->setDefaultFonts("mingliu.ttc");
或者
$c->yAxis()->setTitle(decode("iso8859-1","Y:中文Y轴"));

X轴和Y轴的中文都不能正确显示,不知道大家有什么办法呢??

先谢谢大家了!!!

[ 本帖最后由 YTHTdeWo 于 2008-3-23 22:40 编辑 ]

s1.png (3.07 KB, 下载次数: 42)

s1.png

作者: YTHTdeWo    时间: 2008-03-23 22:30
标题: 回复 #1 YTHTdeWo 的帖子
自己顶一下,拜托大家帮忙看看~~
作者: odacharlee    时间: 2008-03-24 00:41
我在linux下试了试发现好使……

两点:
1. $c->setDefaultFonts("mingliu.ttc");   setDefaultFonts需要带四个参数,
    分别是普通字体、粗体、斜体、粗斜体对应的字体(具体情况参考文档)
    因此应当写成
    $c->setDefaultFonts("mingliu.ttc", "mingliu.ttc", "mingliu.ttc", "mingliu.ttc");

2. 如果1不行,那么要将mingliu.ttc复制到lib/fonts下面
    (我用的是linux版,windows版的目录也许不一样,也许根本不用copy)


附图一张,我用的是simsun.ttc

s1.png (3.33 KB, 下载次数: 34)

能使用中文的perlchartdir

能使用中文的perlchartdir

作者: sumin_0527    时间: 2008-03-24 15:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: YTHTdeWo    时间: 2008-03-24 22:45
谢谢odacharlee大哥的解答~~

不好意思,因为上班的地方不能上外网,现在才看到

我试了下:
$c->setDefaultFonts("mingliu.ttc", "mingliu.ttc", "mingliu.ttc", "mingliu.ttc");

还是不行

然后把mingliu.ttc找出来,copy到目录,,,这样写的:

my $my_font = "C:/Perl/lib/ChartDirector/lib/mingliu.ttc";
$c->setDefaultFonts("$my_font", "$my_font", "$my_font", "$my_font");

两次的结果一样,乱码....

附图一张,用的仍然是simsun.ttc

s1.png (2.82 KB, 下载次数: 40)

s1.png

作者: odacharlee    时间: 2008-03-24 23:43
标题: 回复 #5 YTHTdeWo 的帖子
把你的源代码保存成utf8格式试试。
一般高级些的编辑器EmEditor等在保存时都可以选择编码方式
实在没有,windows的记事本也行
另存然后选择字符编码为UTF-8
作者: sumin_0527    时间: 2008-03-25 08:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: YTHTdeWo    时间: 2008-03-25 19:16
原帖由 odacharlee 于 2008-3-24 23:43 发表
把你的源代码保存成utf8格式试试。
一般高级些的编辑器EmEditor等在保存时都可以选择编码方式
实在没有,windows的记事本也行
另存然后选择字符编码为UTF-8


呵呵,试过了,好了,谢谢odacharlee大哥!!真没想到是编码问题....

用这个语句就行了
$c->setDefaultFonts("mingliu.ttc", "mingliu.ttc", "mingliu.ttc", "mingliu.ttc");
也不用copy mingliu.ttc,直接能找到的

[ 本帖最后由 YTHTdeWo 于 2008-3-25 19:18 编辑 ]

s1.png (2.84 KB, 下载次数: 39)

s1.png

作者: 撒哈拉里的鱼    时间: 2008-12-12 13:42
这个软件是收费的吧?
作者: hawking8987    时间: 2008-12-15 18:13
1. 你如果已经用了 Encode 的decode
“$c->yAxis()->setTitle(decode("iso8859-1","Y:中文Y轴"));”

那么选择编码方式为 gb2312或者GBK,即
“$c->yAxis()->setTitle(decode("gb2312","Y:中文Y轴"));”

编辑完保存的时候保存为系统默认的gb2312格式就可以了



2. 如果你不用decode,那么保存的时候选择UTF-8 就可以直接支持中文了
作者: hawking8987    时间: 2008-12-15 18:15
原帖由 撒哈拉里的鱼 于 2008-12-12 13:42 发表
这个软件是收费的吧?


是收费的哦 还比较贵 不过支持的功能的确很强
作者: txbnmoubb    时间: 2012-09-03 21:29
弄不好。。。。。

作者: txbnmoubb    时间: 2012-09-04 10:31
我按照上面这些做了以后,还是不行
哪位遇到过这个问题,出来交流交流




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2