如何解决ggridges-将第一条数据线降低到图的底部
我对ggplot2
和ggridges
有疑问。我想绘制相同的实验XRD数据。如何在不影响第三个图的情况下将第一个数据降低到图的底部(参见图片)。这是data
# Data import
data_celestine <- read.table('../Data/celestine.asc')
data_barite <- read.table('../Data/barite.asc')
data_sample <- read.table('../Data/sample.asc')
# Plot
df <- data.frame(
x=data_celestine$V1,y=c(data_sample$V2,data_celestine$V2,data_barite$V2),samplename=c(rep('Sample',length(data_celestine$V1)),rep('Celestine',rep('Barite',length(data_celestine$V1))))
library(ggplot2)
library(ggridges)
p <- ggplot(df,aes(x,y,color=samplename))
p + geom_ridgeline(
aes(y=samplename,height=y),fill=NA,scale=.00004,min_height=-Inf) +
theme_bw()
非常感谢您对我的帮助。
解决方法
如果缩放/扩展x / y轴,则可以减小“间隙”。这是gapminder数据集的示例:
## No 'expand'
library(ggplot2)
library(ggridges)
data_url = 'https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv'
gapminder = read.csv(data_url)
ggplot(gapminder,aes(y=as.factor(year),x=lifeExp)) +
geom_density_ridges() +
theme(axis.text=element_text(size=20))
## With 'expand'
library(ggplot2)
library(ggridges)
data_url = 'https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv'
gapminder = read.csv(data_url)
ggplot(gapminder,x=lifeExp)) +
geom_density_ridges() +
scale_y_discrete(expand = c(0.01,0)) +
scale_x_continuous(expand = c(0,0))+
theme(axis.text=element_text(size=20))
因此,对于您的问题,这样的事情应该是一个好的解决方案:
# Data import
data_celestine <- read.table('../Data/celestine.asc')
data_barite <- read.table('../Data/barite.asc')
data_sample <- read.table('../Data/sample.asc')
# Plot
df <- data.frame(
x=data_celestine$V1,y=c(data_sample$V2,data_celestine$V2,data_barite$V2),samplename=c(rep('Sample',length(data_celestine$V1)),rep('Celestine',rep('Barite',length(data_celestine$V1))))
library(ggplot2)
library(ggridges)
p <- ggplot(df,aes(x,y,color=samplename))
p + geom_ridgeline(
aes(y=samplename,height=y),fill=NA,scale=.00004,min_height=-Inf) +
scale_y_discrete(expand = c(0.01,0)) +
theme_bw()
- 如果您需要进一步的故障排除帮助,发布一些实际数据将很有帮助。
我找到了答案。将参数add
添加到expansion
即可完成工作。
# Data import
data_celestine <- read.table('../Data/celestine.ASC')
data_barite <- read.table('../Data/barite.asc')
data_sample <- read.table('../Data/sample.asc')
# Plot
library(ggplot2)
library(ggridges)
df <- data.frame(
x=data_celestine$V1,sample_name=c(rep('Sample',length(data_celestine$V1))))
p <- ggplot(df,color=sample_name))
p + geom_ridgeline(
aes(y=sample_name,scale=.000045,min_height=-Inf) +
scale_y_discrete(expand = expansion(add = c(0.025,0.6))) +
theme_bw()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。