gpt4 book ai didi

对如何打印直方图感到困惑?

转载 作者:行者123 更新时间:2023-11-30 17:38:46 24 4
gpt4 key购买 nike

所以在我的代码中能够计算每个单词的长度并根据单词长度增加索引。我希望能够打印垂直直方图。我尝试了几种不同的方法,但似乎无法使其发挥作用。例如,下面显示的代码会打印出您看到单词长度 7 的次数。我可以复制已经有这个问题答案的某人的代码,但我真的想了解如何构建初始骨架,并在此基础上填充我的数据以构建直方图。我真的很想解释一下它是如何工作的!该程序来自 C 编程 Ritchie 和 Kernighan。第 1.6 章练习 13。提前感谢您的帮助。

#include <stdio.h>

int main()
{
int c, wc, i;
int lenword[10];
wc = 0;

for(i=0;i<10;i++)
{
lenword[i] = 0;
}

while((c=getchar()) != EOF && wc < 10) //Thanks to ClapTrap point out adding wc<10
{
if (c == ' ' || c == '\t' || c == '\n')
{
if (wc > 0)
{
lenword[wc - 1]++;
wc = 0;
}
}
else
{
wc++;
}
}

for(i=0; i<10; i++)
{
printf("Length of index = %d is %d\n", i + 1, lenword[i]);
}
}

最佳答案

如果您可以使用,我建议您使用 gnuplot(GPL 许可,因此可以免费使用)。你可以在Linux系统上使用它,也可以下载Windows系统,尽管我只在Linux下使用它。

为此,您可以打印两列,例如

printf("Index\tLength\n");
for(i=0; i<10; i++)
printf("%d\t%d\n", i + 1, lenword[i]);

然后运行编译后的程序

./your-program > word-lengths.data

然后您可以使用嵌入到 bash 脚本中的 gnuplot 脚本,如下所示:

#!/bin/bash

if test $# -lt 1; then
echo "Usage:"
echo " $(basename $0) list_of_gnuplot_data_files"
echo
exit
fi

while test "x$1" != "x"; do
NAME=$(basename ${1%.data})
gnuplot << EOF
set title "Diagram title"

set key left top
set style data lines
set grid

set autoscale x
set xtics nomirror
set xlabel "Word lengths"

set autoscale y
set ytics nomirror
set ylabel "Word count"

set output "${NAME}.png"
set terminal png nocrop enhanced font verdana 12 size 1900,900
plot "${NAME}.data" using 1:2 title columnhead axes x1y1
EOF
shift
done

因此要使用它,您可以编写:

./gnuplot-script word-lengths.data

它将创建一个 word-lengths.png。您也可以使用纯 gnuplot 脚本而不需要 bash 部分,但对我来说这是迄今为止最方便的方法。

关于对如何打印直方图感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com