使用 table 中的 R 和频率计数绘制饼图和直方图

Plot pie chart and histogram using R from table with frequency count

我有一个分发频率作为 java 程序的 csv 文件输出,格式如下:

push 210
mov 270
jmp 150
cp 190
..so on

我是 R 的新手,我想将其输入到 table 并将其投影为饼图 and/or 直方图以具有带有标签和 % 的可视化表示,类似于下图..

我从搜索和阅读中了解到,这将是一个不错的选择,

myfile <- read.csv("sample.csv", sep="/t");
myfreq <- table(myfile);
pie(myfreq);
hist(myfreq);

我知道 table(myfile) 给出了频率分布,但它计算频率而不是按原样使用它。

  • 根据您的示例输入文件,在加载时,您需要指定 header=F,因为没有 header。
  • 加载时,需要sep='\t'使用制表符分隔符。
  • table()确实会计算频率,但由于您的输入数据已经有频率,因此无需在此处调用它。
  • 您可以用百分比标记切片,但您必须自己计算它们并将 labels 参数的值传递给 pie()

dat <- read.csv('sample.csv', sep='\t', header=F, col.names=c('inst','freq') );
dat;
##   inst freq
## 1 push  210
## 2  mov  270
## 3  jmp  150
## 4   cp  190
cols <- rainbow(nrow(dat));
pie(dat$freq,labels=paste0(round(dat$freq/sum(dat$freq)*100,2),'%'),col=cols);
legend('bottom',legend=dat$inst,pch='■',ncol=nrow(dat),bty='n',col=cols);