我需要一个带有两个Y轴的ggplot,这样主Y轴带有计数(我用函数stat=count
计算)和次Y轴显示用stat_summary(fun.y="mean")
计算的平均值
我用以下方法计算了集群的数量:
library(ggplot2)
ggplot(df,aes(x=cluster,fill=year, stat="count"))+
geom_bar()
与群集中的分歧的平均值:
ggplot(df, aes(x=factor(cluster), y=divergence)) + stat_summary(fun.y="mean", geom="bar")
我分别有这两个ggplots。我想创建一个包含这两个函数的ggplot,count
Primary Y axis (geom_bar)
和Mean
secondary Y axis (geom_point and geom_line)
。divergence year cluster
0.34 2015 A
0.89 2015 A
1.22 2015 A
1.11 2015 B
0.67 2015 B
0.89 2015 B
1.12 2015 B
0.4 2015 B
0.67 2015 B
0.89 2015 B
0.56 2015 B
1.22 2015 B
1.12 2015 B
0.4 2015 B
0.67 2016 A
0.89 2016 A
0.11 2016 B
1.33 2016 C
1.11 2016 C
1 2016 C
0.89 2016 C
1 2016 C
0.45 2016 C
0.23 2016 C
0.89 2016 C
0.8 2017 A
0.6 2017 A
1.11 2017 A
0.34 2017 B
0.78 2017 B
2.1 2017 C
0.89 2017 C
0.89 2017 C
0.34 2017 C
1.55 2017 A
1.11 2017 A
1.11 2017 A
1 2017 A
0.34 2017 A
0.67 2017 A
0.56 2017 B
1 2017 C
0.34 2017 C
0.23 2017 C
1 2017 C
1.33 2017 C
0.78 2017 C
1.11 2017 B
0.78 2017 C
1 2017 C
0.67 2017 C
0.67 2017 A
0.56 2017 A
1 2017 B
0.34 2017 C
0.67 2017 B
0 2017 B
0.67 2017 B
0.67 2017 B
0.34 2017 B
0.45 2017 B
。有人帮我绘图。
非常感谢您的帮助
import { Directive, HostListener, ElementRef } from '@angular/core';
@Directive({
selector: '[credit-card]'
})
export class CreditCardDirective {
@HostListener('input', ['$event'])
onKeyDown(event: KeyboardEvent) {
const input = event.target as HTMLInputElement;
let trimmed = input.value.replace(/\s+/g, '');
if (trimmed.length > 16) {
trimmed = trimmed.substr(0, 16);
}
let numbers = [];
for (let i = 0; i < trimmed.length; i += 4) {
numbers.push(trimmed.substr(i, 4));
}
input.value = numbers.join(' ');
}
}
答案 0 :(得分:2)
我不清楚为什么你想要一个辅助轴,当每个轴上的刻度相同但我已经包括在内,你可以决定你认为它是否合适。
我假设您熟悉dplyr
:
首先,我创建了一个新数据集,其中只包含每个群集的平均值:
df_means <- df %>% group_by(cluster) %>% summarise(mean=mean(divergence))
接下来,我绘制了条形图以及新数据集的直线和点。 scale_y_continuous
中的sec.axis参数可用于创建具有变换比例的辅助轴(在本例中为1:1)
ggplot()+
geom_bar(data=df,aes(x=cluster,fill=year), stat="count") +
geom_line(data=df_means,aes(x=cluster,y=mean, group=1,color='Average')) +
geom_point(data=df_means,aes(x=cluster,y=mean,color='Average'))+
scale_y_continuous("Count", sec.axis = sec_axis(trans = ~. ,name =
'Average'))+
theme(legend.title=element_blank())
更新:
感谢您上传其他数据,我明白为什么您现在想要辅助轴。您可以使用trans
参数将变换应用于辅助轴 - 在这种情况下,我只是指定辅助轴是主要轴的十分之一。
然后,您需要对要显示在辅助轴上的线和点进行反向转换 - 在这种情况下乘以10。
ggplot()+
geom_bar(data=df,aes(x=cluster,fill=year), stat="count") +
geom_line(data=df_means,aes(x=cluster,y=mean*10, group=1,color='Average')) +
geom_point(data=df_means,aes(x=cluster,y=mean*10,color='Average'))+
scale_y_continuous("Count", sec.axis = sec_axis(trans = ~ ./10 ,name =
'Average'))+
theme(legend.title=element_blank())