จะพล็อตเฉพาะค่าสูงสุดทั่วโลกโดยใช้ geom_text ได้อย่างไร

df%>%
  group_by(approved_date)%>%
  summarise(rev=sum(gmv))%>%
  ggplot(aes(x = approved_date, y = rev)) + 
    geom_line() + 
    geom_smooth(method = 'auto', se = FALSE) + 
    labs(x = 'Date', y = 'Revenue', title = 'Revenue by Date') +
    scale_y_continuous(labels = function(x) format(x, scientific = FALSE)) +
    stat_peaks(colour = "red", span = NULL) + 
    stat_valleys(colour = "blue", span = NULL) + 
    geom_text(aes(label = round(rev, 0)),
              vjust = "inward", 
              hjust = "inward",
              show.legend = FALSE,
              check_overlap = TRUE)

ฉันมีรหัสนี้ซึ่งในการเรียกใช้ป้ายกำกับค่าทั้งหมดของ Local Maxima และ Minima ฉันต้องการเพียงค่า Global Maximum และ Global Minimum ทำอย่างไร?


person Harsh Mehta    schedule 03.12.2019    source แหล่งที่มา
comment
โปรดแสดงตัวอย่างที่สามารถทำซ้ำได้เล็กน้อย   -  person akrun    schedule 03.12.2019


คำตอบ (1)


เนื่องจากไม่สามารถเรียกใช้โค้ดในคำถามได้เนื่องจากไม่มีข้อมูล ฉันจึงแสดงตัวอย่างที่แก้ไขเล็กน้อยจากคู่มือผู้ใช้แพ็คเกจ ในกรณีนี้ ตัวอย่างที่แตกต่างกันนี้น่าจะเพียงพอที่จะหาวิธีแก้ปัญหาได้

library(ggpmisc)
ggplot(lynx, as.numeric = FALSE) + geom_line() + 
  stat_peaks(colour = "red") +
  stat_peaks(geom = "text", colour = "red", vjust = -0.5, 
             check_overlap = TRUE, span = NULL) +
  ylim(-100, 7300)

ป้อนคำอธิบายรูปภาพที่นี่

กล่าวอีกนัยหนึ่ง geom "text" ควรถูกส่งเป็นอาร์กิวเมนต์ไปที่ stat_peaks() เช่นเดียวกับ span = NULL เพื่อให้ได้ป้ายกำกับเดียว หากคุณเพิ่ม geom_text() โดยตรง พีคจะไม่ถูกเลือก แต่ค่าทั้งหมดที่จัดเก็บไว้ในตัวแปรที่แมปกับความสวยงาม label จะถูกเพิ่มลงในพล็อตแทน

person Pedro Aphalo    schedule 03.12.2019
comment
ฉันใช้ตัวอย่างอื่นด้านบนเพื่อยืนยันได้ว่าโค้ดในคำตอบของฉันใช้งานได้จริง โดยทั่วไป วิธีที่ดีที่สุดคือรวมตัวอย่างที่ง่ายที่สุดที่แสดงให้เห็นถึงปัญหาแต่เกินกว่าจะสามารถใช้งานได้ไว้ในคำถาม ซึ่งโดยทั่วไปหมายถึงการทำให้ชุดข้อมูลขนาดเล็กของคุณเองพร้อมใช้งาน หรือใช้ข้อมูลที่รวมอยู่ใน R หรือแพ็คเกจในโค้ดของคุณ - person Pedro Aphalo; 03.12.2019