我希望得到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
答案 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