使用 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);
我有一个分发频率作为 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);