这可能很容易解决。
我正在创建一个新的闪亮的仪表板,并且我的公司要求所有地块按列表排序。因此,很自然地我创建了一个列表并使用了scale_x_discrete(limits = list)
。但是,现在要求的是要删除等于零的值,同时仍保留列表的顺序。这可能与scale_x_discrete()
有关吗?
即生成的图将在保持names <- c("before", "same", "different")
顺序的同时排除变量“不同”。
非常感谢您的帮助,下面是一个可复制的示例。
# packages ----------------------------------------------------------------
{
library(dplyr)
library(ggplot2)
}
# Data --------------------------------------------------------------------
names <- c("before", "same", "different")
values <- c(7, 90, 0)
df <- data.frame(names, values)
# ggplot ------------------------------------------------------------------
ggplot(df, aes(names, values))+
geom_bar(stat = "identity")+
scale_x_discrete(limits = names)
您可以编写一个for循环,以删除实际上不想在绘图中显示的数据框的行。
# packages ----------------------------------------------------------------
{
library(dplyr)
library(ggplot2)
}
# Data --------------------------------------------------------------------
names <- c("before", "same", "different")
values <- c(7, 90, 0)
df <- data.frame(names, values)
#Remove empty categories
for(i in 1:length(values))
{
if(values[i] == 0)
{
df <- df[-c(i),]
}
}
# ggplot ------------------------------------------------------------------
ggplot(df, aes(df$names, df$values))+
geom_bar(stat = "identity")+
scale_x_discrete(limits = df$names)