相关疑难解决方法(0)

ggplot2 0.9.0自动从绘图图例中删除未使用的因子水平?

我最近从版本0.8.9升级到ggplot2 0.9.0,现在我得到的是我的情节图例只显示了图中使用的因子级别(它省略了未使用的因素).在它包含图例中的所有因子水平之前.我正在运行Windows 7和R 2.15.0(今天之前的2.14.2).

还有其他人发现这个吗?有没有办法让我可以在我的情节图例中显示未使用的因子水平?

library(ggplot2)

df <- data.frame(fruit = rep(c("apple", "orange"), times=11), 
                 year = 1990:2011, 
                 qty = rnorm(22, 100, 20))

# This plot only gives "apple" in the legend now.
# Before, I used to get both "apple" and "orange". 
qplot(year, qty, data = subset(df, fruit=="apple"), colour = fruit) 
Run Code Online (Sandbox Code Playgroud)

qplot()曾经在传奇中给我"苹果"和"橙色"(尽管只有"苹果"的分数).现在我只在传说中得到"苹果".

这个原因出现了 - 我正在制作许多数据集的子集,我希望这些图例标准化(通常我会欣赏未使用的级别被自动删除而不必输入droplevels(),但这是一个我希望那些未使用的水平).如果这只是我的电脑本地问题,请道歉.

r ggplot2

35
推荐指数
2
解决办法
9473
查看次数

从ggplot条形图中删除未使用的因子水平

我想做这个问题的反面,并且与这个问题相反,尽管这是关于传说,而不是情节本身.

其他SO问题似乎在询问如何保持未使用的因子水平.我实际上喜欢我的删除.我有几个名称变量和几个列(宽格式)的变量属性,我用它来创建多个条形图.这是一个可重复的例子:

library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5))
ggplot(df, aes(x=name,y=var1)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

我只想在我的条形图中显示具有相应var n的名称(因为,B中没有空白空间).

如果我可以简单地更改输出文件名和y=var位,则重用基本绘图代码将非常容易.我希望不必对我的数据框进行子集,只是为了尽可能在每个绘图的结果上使用droplevels!


根据na.omit()建议更新

考虑修订的数据集:

library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5), var3=c(NA,6,7))
ggplot(df, aes(x=name,y=var1)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)

我需要na.omit()用于绘图,var1因为存在NA.但是由于na.omit确保所有列都存在值,因此该图A也会删除,因为它具有NA var3.这更类似于我的数据.我总共响应了15个NAs.我只想删除没有当前绘制的y向量值的因子级别,而不是在整个数据帧中的任何向量中都有NA .

plot r factors ggplot2

19
推荐指数
2
解决办法
4万
查看次数

将空条添加到(百分比)条形图(从长数据 fromat 生成)

我想将特定项目作为条形图中的空条添加到 x 轴

例如:

# load packages
library(reshape2)
library(tidyverse)
library(scales)


#get data
data(tips, package = "reshape2")

tips

# make plot
myplot <- ggplot(tips, aes(day, group = sex)) + 
  geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") + 
  scale_y_continuous(labels=scales::percent) +
  ylab("relative frequencies") +
  facet_grid(~sex)

myplot
Run Code Online (Sandbox Code Playgroud)

现在我想添加缺少的工作日,作为空条:

missing_days <-c("Tue","Wed")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果可能,我想保留tips( 以便我仍然可以在aes命令中使用其他变量的“整洁”长数据格式。将“空”项添加到长数据格式的技巧是什么?

r ggplot2

2
推荐指数
1
解决办法
88
查看次数

如何在ggplot中更改xlim

有几个问题询问如何更改 ggplot x 轴刻度,但我遇到了麻烦,可能是因为我用来绘图的其他美学。我想将 x 轴刻度从 7 扩展到 25。

我正在使用以下向量:

var <- c(2,2,1,0,1,1,1,1,1,3,2,3,3,5,1,4,4,0,3,4,1,0,3,3,0,0,
         1,3,2,6,2,2,2,1,0,2,3,2,0,0,0,0,3,2,2,4,3,2,2,0,4,1,0,1,3,1,4,3,1,2,
         6,7,6,1,2,2,4,5,3,0,6,5,2,0,7,1,7,3,1,4,1,1,2,1,1,2,1,1,4,2,0,3,3,2,2,2,5,3,2,5,2,5)
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码制作一个直方图,其中 x 轴刻度位于条形下方

df <- data.table(x = var)
df <- df[, .N, by=x]

p <- ggplot(df, aes(x=factor(x), y=N)) +
     geom_bar(stat="identity", width=1.0, 
              colour = "darkgreen",
              fill = 'lightslateblue')

p <- p + labs(title = "hello world", x = "x tick", y = "ytick") 

print(p)
Run Code Online (Sandbox Code Playgroud)

当我打印直方图时,我希望 x 轴刻度达到 25

在此处输入图片说明

我尝试使用coord_cartesian(xlim = c(-0, 25))但它没有正确绘制,因为我希望沿着 x 轴标记刻度。

在此处输入图片说明

r histogram ggplot2

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

ggplot2 ×4

r ×4

factors ×1

histogram ×1

plot ×1