표시된 데이터와 축 사이의 공간 제거
다음과 같은 데이터 프레임이 있습니다.
uniq <- structure(list(year = c(1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L), uniq.loc = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("u.1", "u.2", "u.3"), class = "factor"), uniq.n = c(1, 1, 1, 2, 5, 4, 2, 16, 16, 10, 15, 14, 8, 12, 20, 11, 17, 30, 17, 21, 22, 19, 34, 44, 56, 11, 0, 0, 3, 3, 7, 17, 12, 21, 18, 10, 12, 9, 7, 11, 25, 14, 11, 17, 12, 24, 59, 17, 36, 50, 59, 12, 0, 0, 0, 1, 4, 6, 3, 3, 9, 3, 4, 2, 5, 2, 12, 6, 8, 8, 3, 2, 9, 5, 20, 7, 10, 8), uniq.p = c(100, 100, 25, 33.3, 31.2, 14.8, 11.8, 40, 37.2, 43.5, 48.4, 56, 40, 48, 35.1, 35.5, 47.2, 54.5, 53.1, 44.7, 24.4, 46.3, 37.8, 43.6, 44.8, 35.5, 0, 0, 75, 50, 43.8, 63, 70.6, 52.5, 41.9, 43.5, 38.7, 36, 35, 44, 43.9, 45.2, 30.6, 30.9, 37.5, 51.1, 65.6, 41.5, 40, 49.5, 47.2, 38.7, 0, 0, 0, 16.7, 25, 22.2, 17.6, 7.5, 20.9, 13, 12.9, 8, 25, 8, 21.1, 19.4, 22.2, 14.5, 9.4, 4.3, 10, 12.2, 22.2, 6.9, 8, 25.8)), .Names = c("year", "uniq.loc", "uniq.n", "uniq.p"), class = "data.frame", row.names = c(NA, -78L))
다음을 사용하여 영역도를 사용합니다.
ggplot(data = uniq) +
geom_area(aes(x = year, y = uniq.p, fill = uniq.loc), stat = "identity", position = "stack") +
scale_x_continuous(limits=c(1986,2014)) +
scale_y_continuous(limits=c(0,101)) +
theme_bw()
다음과 같은 결과가 나타납니다.
그러나 축과 실제 그림 사이의 공간을 제거하려고 합니다.추가할 때theme(panel.grid = element_blank(), panel.margin = unit(-0.8, "lines"))
다음 오류 메시지가 표시됩니다.
Error in theme(panel.grid = element_blank(), panel.margin = unit(-0.8, : could not find function "unit"
이 문제를 해결하는 방법에 대한 제안이 있습니까?
업데이트: 최신 버전의 ggplot2에서 추가 가능성은 @divibisan의 답변을 참조하십시오.
부터?scale_x_continuous
에 관하여expand
-항목:
데이터 주위에 패딩을 추가하여 축에서 어느 정도 떨어진 곳에 배치하는 데 사용되는 범위 확장 상수의 벡터입니다.기본값은 연속형 변수의 경우 각 변에서 척도를 5%씩 확장하고 이산형 변수의 경우 각 변에서 척도를 0.6단위 확장하는 것입니다.
따라서 문제는 다음을 추가하여 해결됩니다.expand = c(0,0)
로.scale_x_continuous
그리고.scale_y_continuous
이는 또한 다음을 추가할 필요가 없습니다.panel.margin
매개 변수
코드:
ggplot(data = uniq) +
geom_area(aes(x = year, y = uniq.p, fill = uniq.loc), stat = "identity", position = "stack") +
scale_x_continuous(limits = c(1986,2014), expand = c(0, 0)) +
scale_y_continuous(limits = c(0,101), expand = c(0, 0)) +
theme_bw() +
theme(panel.grid = element_blank(),
panel.border = element_blank())
결과:
현재, 다음과 같은 것이 있습니다.expand_scale()
사용자가 전달할 수 있는 기능expand=
척도의 각 면에 대해 서로 다른 확장 값을 지정할 수 있는 인수입니다.
기준,expand_scale()
을 위해 더 이상 사용되지 않습니다.expansion
그렇지 않으면 동일한 기능을 합니다.
또한 확장을 절대 크기로 할지 여부를 선택할 수 있습니다.add=
모수) 또는 그림 크기의 백분율(사용:mult=
매개 변수):
ggplot(data = uniq) +
geom_area(aes(x = year, y = uniq.p, fill = uniq.loc), stat = "identity", position = "stack") +
scale_x_continuous(limits = c(1986,2014), expand = c(0, 0)) +
scale_y_continuous(limits = c(0,101), expand = expansion(mult = c(0, .1))) +
theme_bw()
이것이 제가 가장 많이 투표한 답변이기 때문에, 저는 이것을 확장해서 두 가지의 차이점을 더 잘 설명할 것이라고 생각했습니다.add=
그리고.mult=
두 옵션 모두 그래프 영역을 데이터 외부의 특정 양으로 확장합니다.사용.add
영역을 절대량만큼 확장합니다(해당 축에 사용되는 단위).mult
해당 축의 전체 크기에 대해 지정된 비율로 영역을 확장합니다.
다음 예제에서는 다음을 사용하여 아래쪽을 확장합니다.add=10
즉, 플롯 영역을 -10 단위까지 확장합니다.를 사용하여 상단을 펼칩니다.mult=.15
이 값은 Y 축에 있는 데이터의 전체 크기의 15%만큼 플롯 영역의 맨 위까지 확장됩니다.데이터가 0 - 100이므로 0.15 * 100 = 15 단위이므로 최대 115까지 확장됩니다.
ggplot(data = uniq) +
geom_area(aes(x = year, y = uniq.p, fill = uniq.loc),
stat = "identity", position = "stack") +
scale_x_continuous(limits = c(1986,2014), expand = c(0, 0)) +
scale_y_continuous(limits = c(0,101),
breaks = seq(-10, 115, by=15),
expand = expansion(mult = c(0, .15),
add = c(10, 0))) +
theme_bw()
동일한 결과를 생성하는 다른 옵션은 다음과 같습니다.coord_cartesian
연속 위치 척도(x & y) 대신:
ggplot(data = uniq) +
geom_area(aes(x = year, y = uniq.p, fill = uniq.loc), stat = "identity", position = "stack") +
coord_cartesian(xlim = c(1986,2014), ylim = c(0,101))+
theme_bw() + theme(panel.grid=element_blank(), panel.border=element_blank())
언급URL : https://stackoverflow.com/questions/22945651/remove-space-between-plotted-data-and-the-axes
'source' 카테고리의 다른 글
GetText를 사용하여 클립보드에서 텍스트 가져오기 - 빈 클립보드에서 오류 방지 (0) | 2023.06.10 |
---|---|
Ionic에서 알림 상자 외부를 클릭할 때 알림 상자를 닫지 않는 방법 (0) | 2023.06.10 |
WPF 전역 글꼴 크기 (0) | 2023.06.06 |
파이어베이스 인증에서 이메일을 변경하는 방법은 무엇입니까? (0) | 2023.06.06 |
UIAction 만들기변수 목록이 아닌 배열로 전달하여 '기타 단추'를 시트합니다. (0) | 2023.06.06 |