我有一个分发频率作为csv文件的java程序输出,格式如下:
push 210
mov 270
jmp 150
cp 190
..so on
我对R来说相当新,我想把它输入到一个表格中并将其投影为饼图和/或直方图,以便可视化表示带有标签和%,类似于下图。
我从搜索和阅读中知道它会成为一条线,
myfile <- read.csv("sample.csv", sep="/t");
myfreq <- table(myfile);
pie(myfreq);
hist(myfreq);
我知道table(myfile)
会给出一个频率分布,但它会计算频率而不是按原样使用它。
答案 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);