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

时间:2015-04-06 23:59:48

标签: r plot histogram pie-chart frequency

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

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

我对R来说相当新,我想把它输入到一个表格中并将其投影为饼图和/或直方图,以便可视化表示带有标签和%,类似于下图。

http://i.stack.imgur.com/qHNss.png

我从搜索和阅读中知道它会成为一条线,

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

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

1 个答案:

答案 0 :(得分:2)

  • 根据您的示例输入文件,在加载时,您需要指定header=F,因为没有标题。
  • 加载时,您需要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);

pie