我的資料框有 1 個分類變數和 3 個數值變數。我想在 plotly R 中構建條形圖,其中“share”和“sale”變數將以條形給出并反映在左側 y 軸上,而“成本”變數將通過線可視化,單位將反映在右側的第二個軸上。此外,條形的顏色應根據“模型”列而有所不同
df <- data.frame (model = c("A", "B", "C","D","E","F"),
share = c(12,20,15,9,60,20),
sale = c(16,25,18,14,67,28),
cost = c(14,19,28,24,57,28))
預期輸出(
uj5u.com熱心網友回復:
更新2:只是為了展示如何vjust
作業:
ggplot(df_long, aes(x = model, y= value, label=value))
geom_col(data = filter(df_long, name != "cost"), aes(fill=name), position = position_dodge())
scale_fill_manual(values = c("blue", "grey"))
geom_line(data = filter(df_long, name == "cost"), aes(color = name, group = 1), size = 2)
scale_color_manual(values = "red")
geom_point(data = filter(df_long, name == "cost"), size = 2)
geom_text(data = filter(df_long, name == "cost"), hjust=0, vjust=-6)
scale_y_continuous(
name = "Sale and Share",
sec.axis = sec_axis(~., name ="Cost")
)
theme_minimal()
theme(legend.title=element_blank())
使用次要 y 軸和點數更新:
library(tidyverse)
df_long <- df %>%
pivot_longer(
cols = -model
)
ggplot(df_long, aes(x = model, y= value, label=value))
geom_col(data = filter(df_long, name != "cost"), aes(fill=name), position = position_dodge())
scale_fill_manual(values = c("blue", "grey"))
geom_line(data = filter(df_long, name == "cost"), aes(color = name, group = 1), size = 2)
scale_color_manual(values = "red")
geom_point(data = filter(df_long, name == "cost"), size = 2)
geom_text(data = filter(df_long, name == "cost"), hjust=0, vjust=0)
scale_y_continuous(
name = "Sale and Share",
sec.axis = sec_axis(~., name ="Cost")
)
theme_minimal()
theme(legend.title=element_blank())
第一個答案: 像這樣的東西?
以長格式提供您的資料
對于每個條和線過濾資料
library(tidyverse)
df_long <- df %>%
pivot_longer(
cols = -model
)
ggplot()
geom_col(data = filter(df_long, name != "cost"), aes(x = model, y= value, fill=name), position = position_dodge())
scale_fill_manual(values = c("blue", "grey"))
geom_line(data = filter(df_long, name == "cost"), aes(x = model, y= value, color=name, group=1), size = 2)
geom_point(data = filter(df_long, name == "cost"), aes(x = model, y= value), size = 2)
scale_color_manual(values = "red")
theme_minimal()
theme(legend.title=element_blank())
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485873.html
標籤:r ggplot2 情节地 tidyverse 数据可视化
上一篇:ggplot:如何在ROC曲線和對角線之間著色/填充區域?
下一篇:如何在情節中自定義懸停視窗?