我有每个学生的数据,例如
Student Name Score
Jack 89
Jill 70
Sandy 40
Run Code Online (Sandbox Code Playgroud)
现在我试图使用GD :: Graph :: Bar在条形图中绘制这些图,但由于我对perl和模块很新,我看到我可以手动声明图表中的所有X和Y值被绘制.
但由于我不知道每个学生的名字和分数(从文本文件中提取),我希望能够自动执行这些值,
我在想哈希键和值是一个很好的方法.所以我把所有东西都放在哈希表中,%hash(学生名)=(得分)
任何人都可以帮助我将其绘制成条形图或指导我吗?或者你会推荐一种不同的方法吗?
谢谢
"更新
这是我可以通过输入学生姓名手动绘制图表的部分.
my $graph = GD::Graph::bars->new(800, 800);
@data = (
["Jack","Jill"],
['30','50'],
);
$graph->set(
x_label => 'Students',
y_label => 'Scores',
title => 'Student Vs. Scores',
y_max_value => 60,
y_tick_number => 8,
y_label_skip => 2
) or die $graph->error;
my $gd = $graph->plot(\@data) or die $graph->error;
open(IMG, '>file.png') or die $!;
binmode IMG;
print IMG $gd->png;
Run Code Online (Sandbox Code Playgroud) 我无法成功将curl post 命令转换并执行为python 代码。
卷曲命令
curl -X POST -H "Content-Type:application/json; charset=UTF-8" -d '{"name":joe, "type":22, "summary":"Test"}' http://url
Run Code Online (Sandbox Code Playgroud)
转换后的代码
import requests
import json
url="http://url"
data = {"name":joe, "type":22, "summary":"Test"}
headers = {'Content-type': "application/json; charset=utf8"}
response = requests.post (url, data=json.dumps(data), headers=headers)
print response.text
print response.headers
Run Code Online (Sandbox Code Playgroud)
我没有得到任何回应,当我从 shell 手动执行它时,它工作正常,但是当我执行代码时,没有任何反应,我没有看到错误或任何东西。
我有一个哈希
%grades{$subject}{$student}=$score
Run Code Online (Sandbox Code Playgroud)
我试图从哈希中需要排序的学生中提取每个主题的前30个分数,但我不确定如何对多个密钥哈希进行排序.
到目前为止,我有这个,但这给了我每一个得分而不是每个科目所需的前30名.此外,有更快的方式来执行查询,因为我有近200K学生.
foreach my $subject(sort keys %grades) {
foreach my $student(keys %{ $grades{$subject} }) {
print "$subject, $student: $grades{$subject}{$student}\n";
}
}
Run Code Online (Sandbox Code Playgroud)