免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6507 | 回复: 12
打印 上一主题 下一主题

[求助] chartdir for perl 如何能够让生成的图片里面正确显示中文? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-23 11:59 |只看该作者 |倒序浏览
代码如下:

#!/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, 下载次数: 39)

s1.png

论坛徽章:
0
2 [报告]
发表于 2008-03-23 22:30 |只看该作者

回复 #1 YTHTdeWo 的帖子

自己顶一下,拜托大家帮忙看看~~

论坛徽章:
0
3 [报告]
发表于 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

论坛徽章:
0
4 [报告]
发表于 2008-03-24 15:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 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, 下载次数: 37)

s1.png

论坛徽章:
0
6 [报告]
发表于 2008-03-24 23:43 |只看该作者

回复 #5 YTHTdeWo 的帖子

把你的源代码保存成utf8格式试试。
一般高级些的编辑器EmEditor等在保存时都可以选择编码方式
实在没有,windows的记事本也行
另存然后选择字符编码为UTF-8

论坛徽章:
0
7 [报告]
发表于 2008-03-25 08:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 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, 下载次数: 38)

s1.png

论坛徽章:
0
9 [报告]
发表于 2008-12-12 13:42 |只看该作者
这个软件是收费的吧?

论坛徽章:
0
10 [报告]
发表于 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 就可以直接支持中文了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP