2011-11-10 3 views
1

나는 ggplot2를 사용하여 pointrange() 플롯을 플롯하고 x 및 y 레이블은 모두 각각의 틱의 끝에서 홀수로 떨어져 있습니다. 이것은이 특정 스크립트에서 플롯의 모두와 함께 발생하지 않습니다, 단지 몇이 하나 포함 (사용 가능한 데이터의 하위 집합을 기반으로하지만,하면 문제를 보여줍니다) :축 텍스트의 기수 정렬

Example of odd plotting behavior

로 y 축 레이블이 실질적으로 왼쪽으로 옵셋되고 x 축 레이블이 축 레이블보다 위에 overplot 된 정도까지 틱보다 실질적으로 상쇄되는 것을 볼 수 있습니다.

이 플롯을 만들기 전에 theme_bw()에 대한 유일한 수정은 theme_set (theme_bw (base_size = 8))을 설정하는 것입니다. 플롯 코드 이전에 의도적으로 텍스트 정렬을 변경하지 않았습니다. 당신이 제공 할 수있는 모든 도움에 미리

TestData$StateN <- paste(TestData$State, " (", TestData$N, ")", sep = "") 
TestData$StateN <- factor(TestData$StateN, levels = TestData$StateN[order(TestData$Polarization)]) 

ZP17Test <- ggplot(TestData, 
aes(x = StateN, y = Polarization, 
ymin = Polarization - 1.96 * PolarizationSE, ymax = Polarization + 1.96 * PolarizationSE)) 
ZP17Test <- ZP17Test + geom_hline(yintercept = 0, colour = I(MyPalette(5)[3]), alpha = I(7/12), size = I(1/3)) 
ZP17Test <- ZP17Test + geom_pointrange(size = I(1/3)) 
ZP17Test <- ZP17Test + scale_x_discrete("State (Number of Respondents)") 
ZP17Test <- ZP17Test + opts(title = "State Polarization Levels in 2008", 
axis.text.x = theme_text(angle=45, hjust=1, size = 7)) 
print(ZP17Test) 
ggsave(plot = ZP17Test, "Analysis/Stack_Overflow.png", h = 4, w = 6) 

감사합니다 : 플롯을 생산하는 데 사용되는 코드 여기

TestData: 
structure(list(State = c("AL", "AZ", "CA", "CO", "CT", "DC", 
"DE", "FL", "GA", "IL"), Year = c(2008L, 2008L, 2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2008L, 2008L), N = c(22L, 42L, 286L, 
99L, 30L, 14L, 20L, 173L, 78L, 29L), Polarization = c(0.352923743188869, 
0.505918664112271, 0.445768659699068, 0.555930347461176, -0.0133878043740006, 
-0.380342319255035, -0.450998867087007, 0.385507917713463, 0.368070478718073, 
0.23368733390603), PolarizationSE = c(0.16021790292877, 0.0650610761652209, 
0.0100695976668952, 0.0270310803233059, 0.127526745827604, 0.296328985544823, 
0.179653490097689, 0.0180113004747975, 0.0372516250664796, 0.112905812606479 
), IDPol = c(0.198743353462518, 0.0416441096132583, 0.0551808637190376, 
0.110549247724351, 0.302497569072991, -0.0343523165297017, -0.00367975496702999, 
0.0520660142625065, 0.0762126127715774, 0.0936515057040723), 
IDPolSE = c(0.102763798140243, 0.0523842634480865, 0.00789292373693809, 
0.023425554880421, 0.0918856966184178, 0.184867986813743, 
0.122339223641891, 0.0137386656250425, 0.0285951418531372, 
0.0896433805255375), Estimate = c(0.00932965761458826, -0.000412018017715892, 
0.00315002626133457, 0.00823125148777124, 0.000741919819714724, 
-0.0211994171332907, -0.0218353390160545, 0.00290805283382581, 
0.00406489584624635, 0.00604261698709428), Std..Error = c(0.00398420082222495, 
0.00483343236746232, 0.00186579338568264, 0.0032167092866312, 
0.00379995092553099, 0.0128981988697743, 0.0122846784163747, 
0.00220581166165486, 0.00335683359383524, 0.00240425995025825 
), StateN = structure(c(13L, 25L, 18L, 27L, 4L, 2L, 1L, 15L, 
14L, 7L), .Label = c("DE (20)", "DC (14)", "WA (23)", "CT (30)", 
"TX (365)", "NY (123)", "IL (29)", "PA (36)", "MI (114)", 
"KS (28)", "OK (36)", "NJ (23)", "AL (22)", "GA (78)", "FL (173)", 
"SC (69)", "MN (25)", "CA (286)", "OH (85)", "VA (34)", "IN (55)", 
"OR (27)", "WI (22)", "NM (64)", "AZ (42)", "TN (77)", "CO (99)", 
"LA (83)", "MA (22)", "NC (65)", "MS (63)"), class = "factor")), .Names = c("State", 
"Year", "N", "Polarization", "PolarizationSE", "IDPol", "IDPolSE", 
"Estimate", "Std..Error", "StateN"), row.names = c(1401L, 1403L, 
1404L, 1405L, 1406L, 1407L, 1408L, 1409L, 1410L, 1414L), class = "data.frame") 

된다 : 여기

은() 부분 집합의 아래에 그려 dput입니다 .

+0

'axis.text.x' 호출에서'hjust = 0.5'를 변경하여 x 축 레이블을 더 가깝게 만듭니다. – Ramnath

답변

2

각 축 텍스트 레이블은 항상 내 머리를 지 웁니다. 당신이 원했던 것은 다음과 같습니다 :

axis.text.x = theme_text(hjust = 1,vjust = 1,angle=45, size = 7) 

내 순서대로 차이가 있습니다. 내가 그것을 올바르게 얻을 때까지 나는 항상 그것을 가지고 바이올린을해야한다. 더 똑똑한 사람들은 아마도 그 시스템을 기억할 것입니다.

+0

나는 그 순서가 중요하다는 것을 깨닫지 못했고, 당신의 제안은 문제를 해결하는 것으로 보인다. 고마워. 회전되지 않은 축 텍스트에서도 비슷한 문제가 발생합니다. 새로운 질문을하거나 여기에 추가 할 수있는 방법이 있습니까? – isDotR

+0

@ user479554 솔직히 말해서 주문이 여전히 중요한지 확실하지 않습니다. ggplot2 메일 링리스트에서 그것에 대한 토론을 회상하는 것 같지만 업데이트에서 언급했는지 확신 할 수 없습니다. 어쨌든 항상 필자는이를 필두로해야하기 때문에 아마도 알 수 없었을 것입니다. – joran

+0

@ user479554 또한 theme_bw 대 theme_grey를 사용할 때 축 레이블이 틱에서 어떻게 보 였는지에 대해 토론 한 것을 기억합니다. 솔루션을 다른 곳에서 찾을 수 없다면 별도의 질문이 더 좋을 것이라고 생각합니다. 논의했다. – joran