簡體   English   中英

ggplot2 的問題:在 x 軸(從 y=0)到每個 x 值的最大點之間畫一條垂直線

[英]Problems with ggplot2: draw a vertical line between x axis (from y=0) to the maximum point at each x value

我正在嘗試按鏈繪制價格在我的數據庫組中出現的次數,用不同的顏色表示鏈並繪制一條線,將 x 軸 (y=0) 連接到每個價格的最大值點(x 值) ) 與鏈顏色。 如果兩個不同的鏈具有相同的價格,我希望線條重疊。 這是我的數據:數據

例如:價格 39.5 為鏈 b 出現了兩次,為鏈 a 出現了一次。

我想要一個帶有點和線的圖表。 每個點必須是價格在根據鏈着色的每個鏈中出現的次數。 到目前為止,我可以繪制它,我得到這個圖:

圖1

當我嘗試將點與 x 軸連接時出現問題,我嘗試 geom_segment 但是當相同的價格出現在多個鏈中時,它給了我一個帶有對角線的奇怪圖形,如下所示:

圖2

這是我的代碼:

gP1 <- ggplot(fP1, aes(Price, N, color=Chain), group=Price) +
    geom_point() +
    geom_segment(aes(xend=N, color=Chain, group=Price), yend=0)

任何幫助將不勝感激,我想得到這樣的圖表:

圖3

提前致謝!

嘗試使用geom_segment()定義 x 和 y 位置的正確值的這種方法。 這里的代碼:

library(ggplot2)
#Data
fP1 <- data.frame(Price=c(39.5,39.5,39.9,39.9,40,42.5,42.8,45,46,47.9,50),
                 Chain=c('a','b','h','c','d','e','f','f','e','f','g'),
                 N=c(1,2,1,4,1,1,1,1,2,1,3))
#Plot
ggplot(fP1, aes(Price, N, color=Chain, group=Price)) +
  geom_point() +
  geom_segment( aes(x=Price, xend=Price, y=0, yend=N))+
  theme_bw()

輸出:

在此處輸入圖片說明

上一個草圖考慮了geom_segment()所有設置。 它可以簡化為(非常感謝@RuiBarradas ):

#Plot 2
ggplot(fP1, aes(Price, N, color=Chain, group=Price)) +
  geom_point() +
  geom_segment( aes(xend=Price,yend=0))+
  theme_bw()

它將產生相同的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM