我制作了一个小提琴图,如下所示:
我们可以看到,大多数数据都位于得分为0.90-0.95的区域附近。我希望通过更改比例将焦点集中在0.75到1.00的区间上,从而使评级从0到0.75的空间变小。
有办法吗?
这是我当前用于创建小提琴图的代码:
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")
答案 0 :(得分:0)
您可以使用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")
答案 1 :(得分:0)
虽然可以将比例尺转换为更多地集中在上方区域(例如,将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