簡體   English   中英

R plotly折線圖

[英]R plotly line chart

我有一個包含三個變量的數據集,即性別、年齡和 BMI,這是數據樣本:

我正在嘗試使用 plotly package 在 r 中繪制 plot 折線圖,其中 X 軸顯示 BMI 值,Y 軸顯示年齡和性別 plot 兩條線作為對應於 BMI 和年齡的值。 我正在嘗試這些代碼,但無法獲得正確的 output。

這是我的代碼:

    library(plotly)
data<-read.csv("abc1.csv")
p <- plot_ly(data, x = ~BMI, y = ~Age, type = 'scatter', mode = 'lines',
             linetype = ~Gender,line = list(color = 'rgb(205, 12, 24)', width = 4)) %>%
  layout(title = "Line chart",
         xaxis = list(title = "Age"),
         yaxis = list (title = "BMI"))
p

這是我的控制台 output:

在此處輸入圖像描述

希望您正在尋找最合適的折線圖

#sample data
df <- data.frame(Age=c(75.6, 81.9, 81.9,83.2,84.6,84.9,88,89.1),
                 Gender=c('M','F','F','M','M','F','M','M'),
                 BMI=c(16.2,17.3,14.9,19.6,15.5,14.7,15,14.8))

gender <- levels(df$Gender)
col <- c('red','green','blue')

library(plotly)
p <- plot_ly()
for (i in 1:length(gender)) {
  p <- p %>%
    add_lines(data = df[df$Gender==gender[i],],
              x = ~BMI,
              y = fitted(lm(data = df[df$Gender==gender[i],], Age ~ BMI)),
              line = list(color = col[i]),
              name = gender[i]) %>%
    add_markers(data = df[df$Gender==gender[i],], 
                x = ~BMI,
                y = ~Age,
                symbol = ~Gender,
                marker=list(color = col[i]))
}
p %>%
  layout(xaxis = list(title = "BMI"), yaxis = list(title = "Age"), title="BMI-Age Line Chart")

重新創建數據框:

首先,我嘗試在下面重新創建您的數據:

Gender <- c("M",
            "F",
            "F",
            "M",
            "M",
            "F",
            "M",
            "M",
            "M",
            "F",
            "F",
            "M",
            "M")
Age <- c(75.6,
         81.9,
         81.9,
         83.2,
         84.6,
         84.9,
         88,
         89.1,
         90.1,
         90.4,
         92.9,
         93,
         93.4)
BMI <- c(16.2,
         17.3,
         14.9,
         19.6,
         15.5,
         14.7,
         15,
         14.8,
         19.2,
         16.4,
         16.1,
         15.7,
         25.2)
df <- data.frame(Gender,
                 Age,
                 BMI)
df

這給了我們這個:

   Gender  Age  BMI
1       M 75.6 16.2
2       F 81.9 17.3
3       F 81.9 14.9
4       M 83.2 19.6
5       M 84.6 15.5
6       F 84.9 14.7
7       M 88.0 15.0
8       M 89.1 14.8
9       M 90.1 19.2
10      F 90.4 16.4
11      F 92.9 16.1
12      M 93.0 15.7
13      M 93.4 25.2

創建 plot(繪圖方法)

這里可能有問題的是您對數據進行分面的方式。 我已經像這樣編輯了您的代碼:

library(plotly)
p <- plot_ly(df, 
             x = ~Age, 
             y = ~BMI,
             type = 'scatter', 
             mode = 'lines',
             color = ~Gender) %>% 
  layout(title = "Line chart",
         xaxis = list(title = "Age"),
         yaxis = list (title = "BMI"))
p

此處數據正確的方面:

在此處輸入圖像描述

如果您對按性別添加線條類型一無所知,您也可以對線條類型做同樣的事情:

p <- plot_ly(df, 
             x = ~Age, 
             y = ~BMI,
             type = 'scatter', 
             mode = 'lines',
             color = ~Gender,
             linetype = ~Gender) %>% 
  layout(title = "Line chart",
         xaxis = list(title = "Age"),
         yaxis = list (title = "BMI"))

這使得:

在此處輸入圖像描述

創建 plot(ggpubr 方法)

一種方法是將 ggpubr 或 ggplot 線圖移植到ggplotly function 中,它與 function 服務相同。我為 colors 使用了我自己的調色板,但你可以使用 RGB 代碼使用任何你想要的顏色 select:

library(ggpubr)
line <- ggline(df,
       x="Age",
       y="BMI",
       color = "Gender",
       palette = c("#00AFBB", "#E7B800"),
       title = "Line Graph")
ggplotly(line)

這使得這個 plotly 折線圖:

在此處輸入圖像描述

同樣,從您的代碼中不確定您要做什么,但您也可以使用此方法制作一條紅色和虛線的類型線:

line <- ggline(df,
       x="Age",
       y="BMI",
       linetype = "Gender",
       color = "red",
       title = "Line Graph")
ggplotly(line)

這使得:

在此處輸入圖像描述

暫無
暫無

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

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