簡體   English   中英

在 R 中使用 Plotly 繪制平滑線

[英]Smooth line with Plotly in R

我有一個數據集,其中包含關於總工資和稅收楔子的兩列數據。您可以在下面的代碼行中看到數據:

SAMPLE_WAGES_TAX_WEDGE_TEST<-data.frame(
  GROSS=c(10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000),
  TAXWEDGE=c(30.1,30.4,30.7,30.9,29.1,28.9,28.6,28.5,27.9,27.2,27.1,27.0,27.0,26.8,25,24,23,21,19)
)

所以我的目的是用 plotly 包繪制圖形,並制作一些類似於 ggplot2 中的函數 geom_smooth() 的平滑線。

library(data.table)
library(plotly)

dat <-as.data.table(SAMPLE_WAGES_TAX_WEDGE_TEST)

fig <- plot_ly(dat, x = ~GROSS, y = ~TAXWEDGE, name = "Before reform", type = 'scatter',
               mode = 'lines',line = list(dash = "solid") )

我嘗試使用這行代碼,但我無法添加平滑線,所以任何人都可以幫助解決這個問題嗎?

有兩種方法可以解決這個問題:

1)將ggplot object轉換為plotly

ggfig <- ggplot(dat, aes(x=GROSS, y=TAXWEDGE) ) +
         geom_line() + geom_smooth()

ggplotly(ggfig)

2) geom_smooth()是基於黃土平滑。 您需要先安裝黃土,然后在add_ribbons中與plot_ly object 一起使用。 查看這篇精彩的博客文章(最后一個示例),了解有關 loess 和其他平滑劑的實施指南。

參考並補充將平滑線添加到繪圖圖表中的答案,您可以直接使用plotly和線標記規范中的shape = 'spline'選項以獲得該類型的平滑(參見例如https://en. wikipedia.org/wiki/Spline_interpolation ):

plot_ly(SAMPLE_WAGES_TAX_WEDGE_TEST, x = ~GROSS, y = ~TAXWEDGE, type = 'scatter',
        mode = 'lines', line = list(shape = 'spline', smoothing = 1.3))

其中可選參數smoothing用於(略微)調整平滑度(參見https://plotly.com/r/reference/scatter/#scatter-line-smoothing )。 等效地,使用特定的add_lines跟蹤函數,

plot_ly(SAMPLE_WAGES_TAX_WEDGE_TEST, x = ~GROSS, y = ~TAXWEDGE) %>% 
  add_lines(line = list(shape = 'spline', smoothing = 1.3))

暫無
暫無

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

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