1

所以,我有一个原始数据,如果绘制成图表,应该形成幂律分布。我不太确定如何平滑图表。我可以在 Excel 中执行此操作,但我想在 R 中执行此操作。我有一个包含 2 列的数据框。一个叫做频率,另一个叫做比例。频率是文档中使用的单词的频率。比例是百分比。所以我想在 X 轴上绘制频率,在 Y 轴上绘制比例。我尝试了 barplot 和 ggplot。

调整空间后,条形图看起来很完美。但是由于某种原因,我只能在 Y 轴上显示数字,而不能在 X 轴上显示数字。

ggplot 没有那么流畅。

如果我将绘图转换为密度图,它将改变 Y 轴上的测量值。

如何绘制 X 和 Y,并保留所有测量标签?

barplot(height=speech$proportion,width=speech$frequency,density=FALSE,space=10,border="green",xlab="Speech Frequency", ylab="Percentage of Words")

在此处输入图像描述

和ggplot

ggplot(speech,aes(x=speech$frequency,y=speech$proportion))+geom_bar(stat="identity",fill="green",colour="green") + xlab("Speech Frequency") +ylab("Proportion")

在此处输入图像描述

这就是它在excel中的样子,这就是我想要的。 在此处输入图像描述

4

1 回答 1

0

使用 barplot 更改 x 轴上的标签很繁琐。为此,我通常使用gridBase包。

代码:

# 1: generating some mockup data
speech = data.frame(frequency=c(500,250,125,75,20,10,5,3,1,1,1),proportion=c(c(500,250,125,75,20,10,5,3,1,1,1)/100))
# 2: calling barplot with filled bars and with space=0 (no space between bars)
midpts=barplot(height=speech$proportion,col="green",space=0,border="green",xlab="Speech Frequency", ylab="Percentage of Words")
# 3: loading gridBase, and using it to generate the x-axis labels
library(gridBase)
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
grid.text(speech$frequency, x = unit(midpts, "native"), y=unit(-0.5, "lines"), just="right", rot=90)

结果:

R中带有x标签的条形图

于 2014-02-17T18:13:46.277 回答