這是這個 R 的后續問題
uj5u.com熱心網友回復:
model
by的順序cost
可以通過設定因子的水平來完成。更改geom_text
為geom_label
創建的框,而不是純粹顯示文本。我不確定“。我自己手動指定每個條的顏色”是什么意思。你的意思是填充?顏色現在由您的因素決定,可以通過 更改scale_fill_manual
,但您已經這樣做了。
#data
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))
#set levels of model by cost
df$model <- factor(df$model, levels = arrange(df, desc(df$cost))$model)
#set to long format
df_long <- df %>%
pivot_longer(
cols = -model
)
#plot (changed geom_text to geom_label)
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 = 0.5)
scale_color_manual(values = "red")
geom_point(data = filter(df_long, name == "cost"), size = 2)
geom_label(data = filter(df_long, name == "cost"), hjust=0, vjust=-0.5)
scale_y_continuous(
name = "Sale and Share",
sec.axis = sec_axis(~., name ="Cost")
)
theme_minimal()
theme(legend.title=element_blank())
uj5u.com熱心網友回復:
更新:用你喜歡的顏色定義一個向量,然后使用scale_fill_identity
:
colors <- c("black","blue","black","green","black","orange",
"black","pink","black", "yellow", "black","green")
library(tidyverse)
df_long <- df %>%
pivot_longer(
cols = -model
)
ggplot(df_long, aes(x = fct_reorder(model,desc(value)), y= value, label=value))
geom_col(data = filter(df_long, name != "cost"), aes(fill=colors), position = position_dodge())
scale_fill_identity()
geom_line(data = filter(df_long, name == "cost"), aes(color = name, group = 1), size = 1)
scale_color_manual(values = "red")
geom_point(data = filter(df_long, name == "cost"), size = 2)
geom_label(data = filter(df_long, name == "cost"), hjust=0, vjust=-1.5)
scale_y_continuous(
name = "Sale and Share",
sec.axis = sec_axis(~., name ="Cost")
)
theme_minimal()
theme(legend.title=element_blank())
第一個答案:
我們可以fct_reorder
從forcats
它所在的包中使用tidyverse
library(tidyverse)
df_long <- df %>%
pivot_longer(
cols = -model
)
ggplot(df_long, aes(x = fct_reorder(model, desc(value)), 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 = 1)
scale_color_manual(values = "red")
geom_point(data = filter(df_long, name == "cost"), size = 2)
geom_label(data = filter(df_long, name == "cost"), hjust=0, vjust=-0.5)
scale_y_continuous(
name = "Sale and Share",
sec.axis = sec_axis(~., name ="Cost")
)
theme_minimal()
theme(legend.title=element_blank())
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485871.html
標籤:r ggplot2 情节地 tidyverse 条形图