使用 Perl,如何使用 CSV 文件中的值创建图表?
我对此很陌生,需要有关如何完成这项任务的线索。我有一个包含以下示例数据的 csv 文件:
site,type,2009-01-01,2009-01-02,....
X,A,12,10,...
X,B,10,23,...
Y,A,20,33,...
Y,B,3,12,...
and so on....
我想创建一个 perl 脚本来从 csv 文件读取数据(根据给定的用户输入)并创建 XY(散点)图表。假设我想为日期 2009-01-01 创建一个图表并输入 B。用户应输入类似“2009-01-01 B”的内容,并且应使用 CSV 文件中的值创建图表。
有人可以建议我一些代码来开始吗?
I am new to this and need a clue on how to do this task. I have a csv file with following sample data:
site,type,2009-01-01,2009-01-02,....
X,A,12,10,...
X,B,10,23,...
Y,A,20,33,...
Y,B,3,12,...
and so on....
I want to create a perl script to read data from the csv file (as per the given user input) and create XY(scatter) charts. Let's say that I want to create a chart for date 2009-01-01 and type B. The user should input something like "2009-01-01 B", and the chart should be created with the values from CSV file.
Can anyone please suggest me some code to start with?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不要从代码开始。从 CPAN 开始。
CSV 和 分散
Don't start with code. Start with CPAN.
CSV and Scatter
在这里,您可以从一些代码开始:
当然,您可以使用您想要的任何模块来代替 GD。
Here you go, some code to start with:
Instead of GD you can, of course, use whatever module you'd like.
好的,仅用于娱乐目的:
添加坐标轴并在 ScatterPlot——一个真正令人失望的模块——留给读者作为练习。
请注意,当涉及到 SQL 时我总是不得不作弊。我希望有一个适当的
JOIN
来消除对@x
、@y
和each_array
的需要。输出:
OK, for entertainment purposes only:
Adding axes and generally improving in ScatterPlot — a truly disappointing module — left as an exercise to the reader.
Please note that I always have to cheat when it comes to SQL. I would appreciate a proper
JOIN
that obviates the need for@x
,@y
andeach_array
.Output:
我需要自己制作一些散点图,所以我尝试了其他答案中建议的模块。根据我的口味, GD::Graph::Cartesian 太大了,并且该模块没有提供控制此参数的方法,因此我破解了
Cartesian.pm
的副本(搜索iconsize
如果你想做同样的事情)。I need to make some scatter plots of my own, so I played around with the module suggested in the other answers. For my taste, the data points produced by GD::Graph::Cartesian are far too large, and the module provides no methods to control this parameter, so I hacked my copy of
Cartesian.pm
(search foriconsize
if you want to do the same).