簡體   English   中英

在GGPLOT2中為Barplot添加唯一趨勢線

[英]Adding a Unique Trend Line to a Barplot in GGPLOT2

這部分與我昨天的問題有關。

所以這里是數據和ggplot2中創建的圖。

df = data.frame(date=c(rep(2008:2013, by=1)),
                value=c(303,407,538,696,881,1094))


ggplot(df, aes(date, value, width=0.64)) + 
        geom_bar(stat = "identity", fill="#336699", colour="black") +
        ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
        opts(axis.text.y=theme_text(family="sans", face="bold")) +
        opts(axis.text.x=theme_text(family="sans", face="bold")) +
        opts(plot.title = theme_text(size=14, face="bold")) +
        xlab("Year") + ylab("Users (in millions)") +        
        opts(axis.title.x=theme_text(family="sans")) +
        opts(axis.title.y=theme_text(family="sans", angle=90)) +
        geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm")))

是否可以使用ggplot2在下圖中生成squigly趨勢線

我在R中創建了繪圖,然后在Adobe Photoshop中對其進行了修飾,我想知道是否可以在R中直接生成那條波浪形的趨勢線。

如果在ggplot2中無法做到這一點,是否有任何特定的R包可以接受此任務?

我不是要求重現圖表。 那不是問題。 只是產生趨勢線似乎是一個問題。

在此輸入圖像描述

根據所有評論:波浪線在科學上是可疑的,因為它不是基於數據的統計模型。 (而且它似乎顯示智能手機用戶的數量趨於平穩,當數據顯示沒有這樣的事情。)所以最好的建議是“不要這樣做”。

既然你似乎非常熱衷於這個想法,那么它是可能的。

您可以使用geom_line添加任何您喜歡的geom_line 要在信息圖中復制愚蠢的線條,您可以做一條直線加上一條正弦曲線,讓它擺動。 假設你的情節名為p

p + geom_line(
  aes(date, value), 
  data = data.frame(
    date = seq(2008, 2013, length.out = n),
    value = seq(600, 1300, length.out = n) + 100 * sin(seq(0, 4 * pi, length.out = n))  
  ), 
  arrow = arrow(length = unit(0.4, "cm"))
)

更好的方法是使用黃土平滑曲線。

p + geom_smooth(method = "loess", se = FALSE)  #maybe also span = 0.5, for extra wigglyness.

你的問題的答案顯然是:不要用R做這個.R沒有為此優化。 如果你使用一些矢量圖形程序,你會更快,更接近你想要的。 使用Illustrator,Inkscape(免費)或您喜歡的任何圖形工具。 也許您還想在R中創建圖形,稍后在其中一個程序中對其進行修改。

我可以理解這些評論,並同意這個圖表沒有通過一些測試。 不僅是學術測試,還包括九十年代的外觀和感覺測試。 對Edward Tufte的提及也是出於美學原因。 但是我認為這是一個合法的問題,不值得投票只是因為圖表看起來很難看。 有時學者也需要將他們的東西發布在學術期刊和圖形之外,最終由編輯為大眾編輯。 所以提前知道 - 最好不要嘗試用R做這樣的東西可能值得注意。

暫無
暫無

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

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