在x轴上绘制标签

时间:2013-12-02 15:44:17

标签: r

我希望得到10个不同分子的强度值的直线图,x轴上的分子名称和y轴上的强度值。

我试过了:

x = c("Mol 1","Mol 2","Mol 3","Mol 4","Mol 5","Mol 6","Mol 7","Mol 8","Mol 9","Mol 10")
intensity = c(428,409,388,378,373,140,137,138,139,144)
plot(x,intensity)

但它返回了此错误消息?

plot.window(...)中的错误:需要有限的'xlim'值 另外:警告信息: 1:在xy.coords(x,y,xlabel,ylabel,log)中:强制引入的NA 2:在min(x)中:min没有非缺失参数;返回Inf 3:在max(x)中:max没有非缺失参数;返回-Inf

3 个答案:

答案 0 :(得分:4)

因为你的x变量是离散的,你需要做一点不同的事情:

plot(seq_along(x),intensity,type = "l",axes = FALSE)
axis(side = 2)
axis(side = 1,at = seq_along(x),labels = x)

您的想法是使用x轴的数值创建绘图,然后只需添加特定标签。

如果您错过了图表周围的完整框,则可以向box()添加电话。

答案 1 :(得分:1)

您可以将“x”设为一个因素。

xFact<-factor(x, levels=x)
plot.default(xFact,intensity)

已修改为plot更改为plot.default。正如Joran指出的那样,如果你只是使用plot,你会得到一个箱线图。

重新编辑:要使x轴显示正确的标签,请使用:

plot.default(xFact,intensity,type="p",xaxt="n")
axis(side=1, at=xFact,labels=x)

答案 2 :(得分:1)

使用ggplot:

library(ggplot2)
df <- data.frame(id=1:length(x),x,intensity)
ggplot(df)+                               # set default dataset
  geom_point(aes(x=id,y=intensity))+      # plot the points
  scale_x_discrete(labels=x)+             # label the x-axis ticks
  labs(x="Molecule")+                     # label the x axis
  theme(axis.text.x=element_text(angle=90,vjust=.2,hjust=1))  # rotate and align tick labels