我已经尝试了一段时间来寻找修复程序,但是基本上我想知道是否存在一种快速的方法来“躲避” ggplot2中两个不同数据集的线图。
我的代码当前为:
#Example data
id <- c("A","A")
var <- c(1,10)
id_num <- c(1,1)
df1 <- data.frame(id,var,id_num)
id <- c("A","A")
var <- c(1,15)
id_num <- c(0.9,0.9)
df2 <- data.frame(id,var,id_num)
#Attempted plot
dodge <- position_dodge(width=0.5)
p<- ggplot(data= df1, aes(x=var, y=id)) +
geom_line(aes(colour="Group 1"),position="dodge") +
geom_line(data= df2,aes(x=var, y=id,colour="Group 2"),position="dodge") +
scale_color_manual("",values=c("salmon","skyblue2"))
p
Run Code Online (Sandbox Code Playgroud)
产生:
在这里,“组2”行隐藏了所有“组1”行,这不是我想要的。相反,我希望“组2”行位于“组1”行之下。我环顾四周,发现了上一篇文章:ggplot2 offset散点图点,但是当使用单独的数据帧时,我似乎无法适应该代码以使两条geom_lines相互闪避。
我一直在将我的y变量转换为数值,并略微偏移它们以获得所需的输出,但是我想知道是否存在使用ggplot的闪避功能或其他方法获得相同结果的更快/更简便的方法。
我围绕代码的工作很简单:
p<- ggplot(data= df1, aes(x=var, y=id_num)) +
geom_line(aes(colour="Group 1")) +
geom_line(data= df2,aes(x=var, y=id_num,colour="Group 2")) +
scale_color_manual("",values=c("salmon","skyblue2")) +
scale_y_continuous(lim=c(0,1))
p
Run Code Online (Sandbox Code Playgroud)
给我我想要的输出:
当我尝试扩展数字方法以适合实际数据时,数字方法可能会有些麻烦。我必须将y值转换为因数,将其更改为数值,然后将值合并到第二个数据集,因此更快捷的方法是可取的。在此先感谢您的帮助!
我正在使用 kable 函数创建一个相当大的 html 表,该表中有很多 0。为了更清楚地显示相关信息,我试图通过用空格替换它们来隐藏表格中的 0。
现在,我正在尝试这样的事情,但它不起作用:
my_table = knitr::kable(...)
cat(gsub(0," ",my_table), sep = '\n')
Run Code Online (Sandbox Code Playgroud)
与上述类似的东西可以删除 NA,但我似乎无法让它为 0 工作。
提前致谢!
编辑:示例数据:
Product = c('A','B','A','A','C','B')
Month = c('Jan', 'Feb', 'Feb', 'Apr', 'Jan', 'Feb')
my_data = data.frame(Product, Month)
my_table = table(my_data)
kable(my_table) #This has the 0's which I don't want
Product | Month
A | Jan
B | Feb
A | Feb
A | Apr
C | Jan
B | Feb
Run Code Online (Sandbox Code Playgroud)
电流输出:
----Jan Feb Mar Apr
A 1 1 0 1 …Run Code Online (Sandbox Code Playgroud)