[英]How to assign arbitrary x-axis value in R for a barplot?
我希望根據數字列表在R中制作一個帶有1000個垂直條的條形圖。 然后,我希望得到的圖形具有標記為1-10的x軸,在1000列下均勻分布。 但是,我只能弄清楚如何標記每一列而不是我想要的方法。 這是我目前的代碼:
scores <- c(my 1000 data points)
barplot(scores, main="my plot", xlab="my 1000 scores", names.arg=c("list of 1-10"))
有誰知道我是否有可能擁有X軸格式? 謝謝!
您可以通過在正確的位置命名“分數”來實現
scores <- sample(1000)
names(scores)<-NA
names(scores)[seq(1, 1000, 111)]<-1:10
barplot(scores, main="my plot", xlab="my 1000 scores")
這是如何運作的?
我們將分解這一行:
names(scores)[seq(1, 1000, 111)] <- 1:10
我們已經為“得分”(NA)中的每個值指定了一個名稱
我可以用names(scores)
來稱呼這些名字,我可以用names(scores)
調用這些名字的子集names(scores)[1:10]
現在對於seq(1, 1000, 111)
- 這是一個從1到1000的序列,步長為111
所以names(scores)[seq(1, 1000, 111)]
是“分數”名稱的子集 - 特別是數字1,112,223等。
我為什么用111? 我們試圖在1000個“槽”中平均分配10個值。 用(1000 - 1)/(10 - 1)計算步數
對於你的第二個例子(10到100步驟為10)我們可以簡單地用一組不同的數字替換<-1:10
seq(10, 100, 10)
請注意, length(1:10)
和length(seq(10, 100, 10))
均為10
現在為您的最終示例length(seq(0, 100, 10))
通過包含0,您添加了一個額外的值(總共11個),因此我們需要在names(scores)
使用不同的插槽
(1000 - 1)/(11-1)= 99.9所以我們需要重置名稱
names(scores) <- NA
然后使用新序列設置名稱
names(scores)[seq(1, 1000, 99.9)]<-seq(0, 100, 10)
每個條的x位置由函數本身返回。 所以只需使用xpos <- barplot(...)
。 您可以從par('usr')
計算的y值
或者你使用axis
tmp <- barplot(scores, main="my plot", xlab="my 1000 scores", names.arg=c(""))
axis(1,at=seq(min(tmp),max(tmp),len=10),lab=1:10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.