Ich versuche, ein Diagramm ähnlich dem Bild zur Verfügung gestellt. Statt Staaten möchte ich die Teams. Anstelle von "Basic oder Above", "Proficient oder Above" und "Advanced" möchte ich "BA", "OBP", "SLG" und "OPS", wobei die Teams basierend auf "BA" aufgelistet werden. Außerdem möchte ich, wie auf dem Bild, die Punkte abwechselnd wechseln. Hier ist, was ich bisher habe, aber ich habe Schwierigkeiten mit den Teilen zwischen ggplot und rowTheme. Beachten Sie, dass Sie scrollen müssen, um mehr Code anzuzeigen.R Zeile beschriftet Plot für MLB-Teams und ein paar Baseball Statistische Kategorien
Jede Hilfe würde sehr geschätzt werden.
df <- read.table(textConnection(
'Team BA OBP SLG OPS
ARI 0.261 0.32 0.432 0.752
ATL 0.255 0.321 0.384 0.705
BAL 0.256 0.317 0.443 0.76
BOS 0.282 0.348 0.461 0.81
CHC 0.256 0.343 0.429 0.772
CHW 0.257 0.317 0.41 0.727
CIN 0.256 0.316 0.408 0.724
CLE 0.262 0.329 0.43 0.759
COL 0.275 0.336 0.457 0.794
DET 0.267 0.331 0.438 0.769
HOU 0.247 0.319 0.417 0.735
KCR 0.261 0.312 0.4 0.712
LAA 0.26 0.322 0.405 0.726
LAD 0.249 0.319 0.409 0.728
MIA 0.263 0.322 0.394 0.716
MIL 0.244 0.322 0.407 0.729
MIN 0.251 0.316 0.421 0.738
NYM 0.246 0.316 0.417 0.733
NYY 0.252 0.315 0.405 0.72
OAK 0.246 0.304 0.395 0.699
PHI 0.24 0.301 0.384 0.685
PIT 0.257 0.332 0.402 0.734
SDP 0.235 0.299 0.39 0.689
SEA 0.259 0.326 0.43 0.756
SFG 0.258 0.329 0.398 0.728
STL 0.255 0.325 0.442 0.767
TBR 0.243 0.307 0.426 0.733
TEX 0.262 0.322 0.433 0.755
TOR 0.248 0.33 0.426 0.755
WSN 0.256 0.326 0.426 0.751'), header = TRUE)
library(ggplot2)
library(tidyr)
library(dplyr)
rowTheme <- theme_gray()+ theme(
plot.title=element_text(hjust=0.5),
plot.subtitle=element_text(hjust=0.5),
plot.caption=element_text(hjust=-.5),
strip.text.y = element_blank(),
strip.background=element_rect(fill=rgb(.9,.95,1),
colour=gray(.5), size=.2),
panel.border=element_rect(fill=FALSE,colour=gray(.75)),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.y = element_blank(),
panel.spacing.x = unit(0.07,"cm"),
panel.spacing.y = unit(0.07,"cm"),
axis.ticks=element_blank(),
axis.text=element_text(colour="black"),
axis.text.y=element_text(size=rel(.78),
margin=margin(0,0,0,3)),
axis.text.x=element_text(margin=margin(-1,0,3,0))
)
colName <- function(x){
ints= 1:length(x)
names(ints)=x
return(ints)
}
rowOrd <- with(df,
order(BA, OBP,
OPS, SLG, decreasing=TRUE))
colOrd <- c(1,5,4,3,2)
df2 <- df[rowOrd,colOrd]
head(df2[,c(1,2,3,4,5)])
windows(width=8, height=9)
df3 <-
(ggplot(df,aes(x=Percent,y=Team,fill=Row,group=Grp))
+ labs(title= "Title",
x="Percent", y="Teams")
+ geom_point(shape=21,size=3)
+ scale_fill_manual(values=rowColor, guide=FALSE)
+ facet_grid(Grp ~ Achievement, scale="free",space="free_y")
+ rowTheme
+ theme(axis.text.y=element_text(size=rel(.78),
face='bold'))
)
df3
Das ziemlich nahe ist, was ich suche. Ich würde mir wünschen, dass die Mannschaften vom besten BA zum schlechtesten BA bestellt würden, so würden die Punkte gut sortiert, und das würde größtenteils zu den anderen Statistiken führen, weil Teams mit besserem BA bessere Statistiken haben andere Kategorien. Wäre das schwer umzusetzen? –
@John H Bitte, die obige Bearbeitung. Um nach BA zu sortieren, könnte man folgendes verwenden: df $ Team2 <- reorder (df $ Team, df $ BA) –
Danke. Wenn ich jestmes Graph verwenden würde, würde ich es dann mit derselben Aussage implementieren? Wenn ja, wohin würde es gehen? –