我已经得到以下代码(使用ggplot2),输出下表:
ggplot(final,aes(x=final$Players,y=final$AvgPts,ymin=final$min,ymax=final$max)) +
geom_pointrange() + theme_bw() + coord_flip() +
geom_hline(yintercept = min(final$min)-1,linetype="dotted") + ylab("") +
xlab("") +geom_text(aes(label=final$AvgPts),hjust=0.5, vjust=-0.8, size=3) +
ggtitle(paste("2016 Moneyball Average Spreads for ",pos," averaging more than",points)) +
theme(plot.title = element_text(size=10, face="bold"))
我希望能够做的是在表的右侧添加几列,例如在森林图中,两列将是:
column1<-final$salary/final$AvgPts
column2<-final$sd
如果可能,我还希望能够在这些列中重新排序图表。
是否还有一种方法可以在最终$ AvgPts上重新排序现有图表?
final的结构如下:
Gms AvgPts max min sd Moneyball Team salary position playing.status Players
(dbl) (dbl) (dbl) (dbl) (dbl) (chr) (fctr) (dbl) (fctr) (fctr) (chr)
1 3 92.00 107 81 13.45 Adam Oxley COL 6100 MID Start Adam Oxley, COL, MID, 6100
2 4 107.00 130 88 20.30 Adam Treloar COL 8500 MID Start Adam Treloar, COL, MID, 8500
3 3 97.67 110 91 10.69 Bernie Vince MEL 7300 MID Not Named Bernie Vince, MEL, MID, 7300
4 4 91.00 119 59 28.66 Jack Viney MEL 6500 MID Start Jack Viney, MEL, MID, 6500
5 4 107.50 142 71 33.91 Jack Ziebell NM 7500 MID Start Jack Ziebell, NM, MID, 7500
6 4 101.25 130 68 25.53 Lachie Neale FRE 8500 MID Start Lachie Neale, FRE, MID, 8500
7 4 110.75 143 55 38.40 Nat Fyfe FRE 8400 MID Start Nat Fyfe, FRE, MID, 8400
8 4 102.00 114 86 11.78 Scott Pendlebury COL 9200 MID Start Scott Pendlebury, COL, MID, 9200
9 2 108.00 128 88 28.28 Steele Sidebottom COL 8500 MID Start Steele Sidebottom, COL, MID, 8500
10 4 104.75 114 95 8.14 Taylor Adams COL 8000 MID Start Taylor Adams, COL, MID, 8000
答案 0 :(得分:1)
要添加其他图表,有两种解决方案:
ggplot2
,使用函数facet_wrap
griExtra
:grid.arrange
可以创建多个ggplots。关于重新排序的具体代码,最简单的方法是重新排序因子级别。
final$Players<-factor(final$Players, levels = unique(final$Players)[order_vector])
此外,在aes ggplot
中,只应传递列的名称而不是矢量项。例如,您可以重写:
ggplot(data = final,aes(x=Players,y=AvgPts,ymin=min,ymax=max))
我想你想按每个玩家的意思订购。
Mean<-sapply(unique(final$Players),function(z){
mean(final$AvgPoints[as.character(final$Players) == as.character(z)),]
}
)
final$Players<-factor(final$Players, levels = unique(final$Players)[order(Mean)])
library(gridExtra)
g1<-ggplot(final,aes(x=Players,AvgPts,ymin=min,ymax = max)) + ...
g2<-tableGrob(head(final[,c("salary",sd)]))
grid.arrange(g1,g2, ncol=1)
有关ggplot
和gridExtra
的更多信息,请访问:https://github.com/hadley/ggplot2/wiki/Mixing-ggplot2-graphs-with-other-graphical-output