我有一個名為(casos_obitos)的資料框架,看起來像這樣:
EPI_WEEK CASES DEATHS
SE 51 1053 19
SE 52 1384 21
SE 53 1892 25
SE 01/21 1806 43
我在用ggplot做一個圖,把病例和死亡病例都放在兩個不同的geom_line中。這是我的代碼:
scl = 10
ggplot(data = casos_obitos, aes(x = EPI_WEEK, y = CASES, 填充= CASES。 組=1))
scale_y_continuous(limits = c(0。 max(casos_obitos$CASES) 10)。 擴展=擴展(mult = c(0。 . 1)),
sec.axis = sec_axis(~. /scl。 name = "No de óbitos")) >
geom_line(aes(x = SEM_EPI, y = CASES, color = "CASES")。 尺寸= 1)
geom_line(aes(x = SEM_EPI, y = DEATHS*scl。 顏色= "DEATHS")。 尺寸= 1)
geom_text(aes(label=CASES)。 hjust= 0. 5, vjust = -2。 大小= 2. 0, color= "black")
實驗室(x = "Semana Epidemiológica"/span>。 y = "No de Casos")
scale_colour_manual(" "。 values=c("CASES" = "blue"。 "DEATHS" = "red"))
theme_minimal(base_size = 10)
主題(legend.position = "bottom",軸。 line = element_line(colour = "black")。
axis.text. x=element_text(angle = 90。 vjust = 0. 5, hjust=1。 color="black"),
axis.text. y=element_text(color) operator">="black"))
現在,我的情節看起來是這樣的:
其中藍色的線是病例欄,紅色的是死亡欄。我需要在紅線上添加標簽,但我似乎找不到這方面的答案。我還希望以一種 "漂亮 "的方式來放置標簽,這樣我就能理解這些數字,而且它們不會像現在這樣看起來很亂。
謝謝!
uj5u.com熱心網友回復:
你應該能夠添加以下內容來獲得底線上的標簽:
你應該能夠添加以下內容來獲得底線上的標簽。
geom_text(aes(y = DEATHS*scl。 label= DEATHS), hjust= 0。 5, vjust = -2。 大小= 2. 0, color= "black")
你也可以考慮將你的資料重塑為一種長格式,以便將CASES和DEATHS(縮放后)的值合并到同一列中,用另一列來區分每個值與哪個系列有關。 ggplot2通常在這種形式的資料中作業得更順利--你將把顏色美學映射到指定哪個系列的列中,然后你只需要一個geom_line和一個geom_text來獲得兩個系列。在這種情況下,由于只有兩個系列,而且其中一個是按比例的,可能不值得麻煩地進行切換。
"好看的標簽 "是主觀的,是一個比聽起來更難的問題。有幾個選擇,包括:
"漂亮的標簽 "是一個主觀的問題,而且比聽起來更難。
使用像
ggrepel::geom_text_repel這樣的函式來自動轉移標簽,使其不會相互重疊。它的作業方式是從一個初始點開始,然后迭代推移,直到標簽有你所指定的那么多的分離。有許多選項可以調整初始的起始位置和推移的作業方式。使用代碼手動推送你需要的標簽,例如,通過調整某些點的vjust。例如,你可以通過預先計算移動平均線并將數值與之相比較,使用vjust使低于相鄰點的標簽位于線下。
事后手動調整點,例如,通過使用
officer/svg來輸出到一個矢量檔案,你可以在powerpoint中編輯。通過轉移到像
ggplotly這樣的互動式選項來完全避免持久的標簽,并在懸停時看到標簽,而不是一直都有。
你也可以看看像scales::comma這樣的函式來控制標簽本身的顯示方式。我預計你的死亡標簽將有許多位小數,但你可能只想要其中的整數部分......
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330224.html
標籤:
