ggplot 中的轴变换 - 如何更改特定间隔的比例?
Axis tranformation in ggplot - How do I change the scale on a specific interval?
我做了一个小提琴情节,看起来像这样:
正如我们所见,大部分数据位于分数为 0.90-0.95 的区域附近。我想要的是通过改变从 0 到 0.75 的 less space 评级的比例来关注 0.75 到 1.00 的区间。
有办法吗?
这是我目前用来创建小提琴情节的代码:
ggplot(data=Violin_plots, aes(x = Year, y = Score)) +
geom_violin(aes(fill = Violin_plots$Year), trim = TRUE) +
coord_flip()+
scale_fill_brewer(palette = "Blues") +
theme(legend.position = 'none') +
labs(y = "Rating score",
fill = "Rating year",
title = "Violin-plots of credit rating scores")
您可以使用 ggplot2::coord_cartesian()
创建第二个图来放大原始图,而无需修改数据
ggplot(data=Violin_plots, aes(x=Year,y=Score*100)) +
geom_violin(aes(fill=Violin_plots$Year),trim=TRUE) +
coord_flip() +
coord_cartesian(xlim = c(0.75, 1.00)) +
scale_fill_brewer(palette="Blues") +
theme(legend.position='none') +
labs(y="Rating score",fill="Rating year",title="Violin-plots of credit rating scores")
虽然可以将比例尺转换为更多地关注上部区域(例如添加 trans = "exp"
作为比例尺的参数),但非线性比例尺通常很难正确解释。
对于此类用例,我推荐 ggforce 包中的 facet_zoom
,它几乎就是为此目的而构建的(参见小插图 here)。
我还从 ggstance 包中从 geom_violin() + coord_flip()
切换到 geom_violinh
,它通过提供翻转版本的 ggplot 组件扩展了 ggplot2。下面的模拟数据示例:
library(ggforce) # for facet_zoom
library(ggstance) # for flipped version of geom_violin
ggplot(df,
aes(x = rating, y = year, fill = year)) +
geom_violinh() + # no need to specify trim = TRUE as it's the default
scale_fill_brewer(palette = "Blues") +
theme(legend.position = 'none') +
facet_zoom(xlim = c(0.75, 0.98)) # specify zoom range here
模拟题中数据特征的样本数据:
df <- diamonds[, c("color", "price")]
df$rating <- (max(df$price) - df$price) / max(df$price)
df$year <- df$color
我做了一个小提琴情节,看起来像这样:
正如我们所见,大部分数据位于分数为 0.90-0.95 的区域附近。我想要的是通过改变从 0 到 0.75 的 less space 评级的比例来关注 0.75 到 1.00 的区间。
有办法吗?
这是我目前用来创建小提琴情节的代码:
ggplot(data=Violin_plots, aes(x = Year, y = Score)) +
geom_violin(aes(fill = Violin_plots$Year), trim = TRUE) +
coord_flip()+
scale_fill_brewer(palette = "Blues") +
theme(legend.position = 'none') +
labs(y = "Rating score",
fill = "Rating year",
title = "Violin-plots of credit rating scores")
您可以使用 ggplot2::coord_cartesian()
ggplot(data=Violin_plots, aes(x=Year,y=Score*100)) +
geom_violin(aes(fill=Violin_plots$Year),trim=TRUE) +
coord_flip() +
coord_cartesian(xlim = c(0.75, 1.00)) +
scale_fill_brewer(palette="Blues") +
theme(legend.position='none') +
labs(y="Rating score",fill="Rating year",title="Violin-plots of credit rating scores")
虽然可以将比例尺转换为更多地关注上部区域(例如添加 trans = "exp"
作为比例尺的参数),但非线性比例尺通常很难正确解释。
对于此类用例,我推荐 ggforce 包中的 facet_zoom
,它几乎就是为此目的而构建的(参见小插图 here)。
我还从 ggstance 包中从 geom_violin() + coord_flip()
切换到 geom_violinh
,它通过提供翻转版本的 ggplot 组件扩展了 ggplot2。下面的模拟数据示例:
library(ggforce) # for facet_zoom
library(ggstance) # for flipped version of geom_violin
ggplot(df,
aes(x = rating, y = year, fill = year)) +
geom_violinh() + # no need to specify trim = TRUE as it's the default
scale_fill_brewer(palette = "Blues") +
theme(legend.position = 'none') +
facet_zoom(xlim = c(0.75, 0.98)) # specify zoom range here
模拟题中数据特征的样本数据:
df <- diamonds[, c("color", "price")]
df$rating <- (max(df$price) - df$price) / max(df$price)
df$year <- df$color