R로 플로팅하려면 ggplot2 또는 ggvis를 배워야합니까? 둘 중 하나가 어떤면에서 우월하다면 두 가지 모두 배우고 싶지는 않습니다. R 커뮤니티가 기능이 겹치는 새 패키지를 계속 만드는 이유는 무엇입니까? 소개 블로그 게시물 정교한 플로팅 패키지 ggplot2가 이미 존재하는 경우 ggvis가 만들어진 이유는 언급하지 않습니다.
댓글
답변
ggplot2로 시작합니다. 정적 플롯을 생성합니다.
정적 플롯과 별도로 ggvis를 사용하여 인터랙티브 플롯을 생성 할 수도 있습니다. ggplot2의 구문을 배웠습니다. 그러면 ggivs 플롯을 만들기 위해 상호 작용을 추가하는 구문이 자연스럽게 따릅니다.
댓글
- 이것은 부정확합니다 (아마도 작성 당시 정확했습니다). ggvis는 확실히 정적 플롯을 만드는 데 사용할 수 있습니다. 대화 형 플롯도 허용한다는 사실은 제한이 아니라 기능입니다. 정적 플롯의 간단한 예 :
library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Answer
Dianne Cook의 답변을 좀 더 확장하고 싶습니다. 그녀가 말했듯이 ggplot2는 정적 플롯을 만들고 ggvis는 대화 형 플롯을위한 것입니다. 그에 대한 많은 의미가 있습니다.
파일 유형 ggvis 출력은 CSS 및 javascript 파일을 포함하는 HTML입니다. ggvis는 자연적으로 일반 이미지 파일을 출력하지 않습니다. ggplot2는 일반 이미지를 출력합니다. HTML, pdf, gif, 전자 메일 또는 기타 파일에 포함되어야합니다. ggvis, 파일을 전자 메일로 보내려면 브라우저에서 볼 수 있도록 HTML 파일 디렉토리를 압축합니다.
애니메이션 그 결과 애니메이션을 만들려는 경우 ggplot2에 프레임을 추가하고 병합합니다.하지만 ggvis로이를 수행하는 자연스러운 방법은 없습니다. 대화식으로 작동하는 ggvis는 “라이브”애니메이션을 적용하지만 이들은 다른 종류의 애니메이션입니다. ggvis가 처리 할 수있는 것보다 더 많은 작업이 프레임 당 진행되는 경우 , 당신은 이미지를 생성하고 배경에서 영화를 만들어서 (적어도 자연스러운 방식으로)이 문제를 해결할 수 없습니다. 마찬가지로 사용자는 ggvis에서 영화 나 gif 파일을 다운로드하여 재생할 수 없습니다.
지금 현재 프로젝트에서 ggplot2가 대화식으로 애니메이션하기에는 너무 느리기 때문에 ggplot2에서 ggvis로 전환했습니다. 하지만 사용자가 설정 작업을 마친 후 “이동”을 클릭하고 자신이 한 작업에 대한 전체 속도의 부드러운 애니메이션 동영상을 다운로드 할 수 있기를 바랍니다.이 작업을 수행하는 방법을 알지 못했습니다. ggvis이지만 ggplot2를 사용하는 케이크가 될 것입니다.
속도 ggvis는 특히 데이터를 변경할 때 ggplot2보다 훨씬 빠릅니다. 각 ggplot2 플롯에는 1 초 또는 몇 초의 지연이 있습니다. ggvis는 처음 플롯을 생성 할 때 두 번째 정도의 시간이 있습니다. 그 후 데이터 변경이 원활합니다. ggvis는 데이터에 “반응 적으로”연결될 수 있으므로 데이터가 변경 될 때마다 자동으로 업데이트됩니다. ggplot2를 사용하면 전체 플롯이 다시 그려집니다.
스타일 & 모양 ggplot2 플롯이 약간 보임 얼핏 보면 ggvis 플롯보다 더 좋습니다. ggplot2 플롯은 매우 우아합니다. ggvis 플롯은 더 간단하지만 나에게 성장하고 있습니다. xkcd 및 wesanderson 패키지와 같은 ggplot2에 대한 확장도 있습니다. 여기에는 ggvis에 대한 아날로그가 없습니다. ggplot2 플롯은 모두 같은 사람 (ggplot2의 작성자)이 만든 것처럼 보이며 잠시 후 피곤해집니다.
완전성 최소한 ggvis가 지원하지 않는 ggplot2에서 만들 수있는 플롯 유형이 있습니다. 지금까지. 예를 들어, ggvis에는 “rug”플롯 요소가 없습니다. ggvis로 만든 하나 또는 두 개의 등치 물을 보았지만 아직 기본적으로 기본 제공되는 지원은 없습니다. ggplot2에는 극좌표 (예 : 원형 차트)가 있습니다. , ggvis는 그렇지 않습니다. 또한 ggvis에서 누락 (ggplot2 또는 ggplot2 확장에서 사용 가능) : 상자 그림, 등고선 그림, 자연 히트 맵, 자연 상관 차트, 도트 그림, 바이올린 그림, 네트워크 그림, 덴드로 그램. 당연히 확신합니다. 아주 영리한 사람들은 ggvis에서이 모든 것을 만들 수 있지만, 저는 그렇게 영리하지는 않습니다.
주석 ggplot2는 매우 훌륭하고 활용도가 낮은 주석 프레임 워크를 가지고 있지만 ggvis는 그렇지 않습니다.
서브 플롯 & 패싯 ggplot2는 , 그러나 다소 제한적인 “패싯”기능. 그리드 패키지를 사용하여 여러 ggplot2 플롯을 결합 할 수도 있습니다. 현재로서는 ggvis로도 할 수 없습니다. ggvis 플롯은 단일 이미지로 결합 될 수 없으며 ( “이미지가 아니고”라이브 “웹 페이지이기 때문에) 어떤 종류의 패싯이나 서브 플로팅도 지원하지 않습니다. 이것은 파이프 라인에 있어야합니다.
시각적 유연성 ggplot2는 모든 플롯이 동일하게 보이기를 원합니다. 즉, 작성자가 스타일을 선호하는 것처럼 보입니다. 예를 들어 ggplot2에서 여러 y 축이있는 플롯을 갖는 방법은 없습니다. ggvis는 할 수 있습니다. ggvis는 ggplot2보다 훨씬 더 유연합니다. 범례 숨기기, 여러 범례를 하나로 결합하는 것과 같은 작업을 훨씬 쉽게 수행 할 수 있으며, 서로 다른 축척을 사용합니다. 같은 플롯에있는 것 등입니다.
심층 사용자 정의 기능 새로운 영리한 스케일, ggplot2에서 그렇게하기가 너무 어렵지는 않습니다 (매우 혼란 스럽지만). ggvis에서 많은 것을 할 수있는 방법이없는 것 같습니다. 아직은 아닐 수도 있습니다.
시계열 ggplot2는 시계열을 그리는 것을 좋아하지 않습니다. 할 수 있지만 원하지 않습니다 . 실제로 둘 다 원하지 않습니다. 둘 다 data.frame에 데이터를 공급해야한다고 주장하며 처리 할 수 없습니다. xts 또는 동물원 개체. 시계열을 분할하는 기능도 내장되어 있지 않습니다. 그러나 ggvis는 ggplot2만큼 열심히 시계열에 맞서 싸우지 않습니다. 그것은 부분적으로 ggvis 플롯의 데이터를 업데이트하는 것이 너무 빠르기 때문이라고 생각합니다. 시계열을 플롯하려면 두 가지 중 하나를 제출해야하지만 ggvis는 이에 대해 훨씬 덜 수동적입니다. .
동일한 구문입니까? 다소 … 공통점이 많습니다. , 하나의 스타일에서 생각 하는 법을 배우면 다른 스타일에 적응하는 데 도움이됩니다. 특히 두 가지 모두 설계되어 모든 플로팅 호출이 모두 한 줄로 서로 파이프됩니다. 이것의 가장 큰 장점은 디버깅과 프로파일 링을 정말 어렵게 만들고 기본적으로 Rstudio와 같은 것들에서 디버깅 / 프로파일 링 기능을 쓸모 없게 만든다는 것입니다. 그 외에는 구문 적으로 상당히 다릅니다. ggplot2에서 어려운 것들은 ggvis에서 쉽습니다. ggplot2에서 쉬운 것은 ggvis에서는 불가능합니다. 그 반대. (나는 ggvis가 작업을 수행하는 방식을 약간 선호하므로 이해하기 더 쉽습니다.)
버그 ggvis는 아직 많이 있습니다. 때로는 이상하게 작동합니다. 하지만 때로는 문제를 해결하는 데 몇 시간이 걸리고 의미가 거의없는 이유로 플롯이 무작위로 사라집니다. 개발자들은 이것을 자유롭게 인정하지만 ggvis는 아직 생산 준비가되어 있지 않습니다. 복잡한 문제를 다루면 농담이 아님을 알게됩니다 .
요점 : 중간 플롯 팅을 각각 배우는 데는 약 16 시간이 걸립니다. 따라서 현실적으로 둘 다 배우게 될 것입니다.
댓글
- 훌륭한 비교
- 더 빠른 ggvis, lattice 또는 rgl은 무엇입니까? (대용량 데이터 세트의 경우)
- +1 환상적인 글쓰기. 지금까지의 경험을 바탕으로 여기에있는 모든 것에 동의합니다.
- 안녕하세요, ggvis 대 rcharts는 어떻습니까?
- 타임 시리즈 : ggplot2는 확장팩 ggfortify로 확실히 승리합니다. 이에 대한 훌륭한 문서를 참조하십시오 : rpubs.com/sinhrks/basics .
Answer
library(ggvis)
뒤에 나타나는 메시지는 자명 한 것 같습니다.
ggvis API는 현재 빠르게 발전하고 있습니다. 프로덕션을 위해이 기능에 의존하지 않는 것이 좋지만 자유롭게 탐색 할 수 있습니다. 명확한 버그가 발견되면 https://github.com/rstudio/ggvis/issues 에 최소한의 재현 가능한 예를 제출하세요. 질문 및 기타 토론은 https://groups.google.com/group/ggvis 를 사용하세요.
ggplot2와 비교했을 때 ggvis는 여전히 몇 가지 기능과 세련미가 부족합니다 (예 : 눈금 레이블과 겹치는 축 제목과 같은 그래프에 제목을 추가 할 방법이 없으며 더 많은 항목이 있으며 패싯이 지원되지 않음 등). 반면에 ggvis 구문은 좀 더 깔끔하고 상호 작용은 정말 대단합니다.
내 경험에 비추어 볼 때 반짝이는 앱을 만드는 경우 ggvis는 필수입니다. 그런 다음 웹 및 R 친화적 인 그래프 플로팅 엔진의 이점이 현재 가지고있는 모든 결함보다 훨씬 큽니다.
데이터 탐색을 위해 정적 그래프를 작성하려는 경우 ggplot2는 많은 멋진 기능과 건강한 사용자 커뮤니티 및 학습 할 많은 리소스를 갖춘 성숙한 라이브러리입니다.
두 패키지의 철학은 비슷하므로 한 패키지에서 다른 패키지로 기술을 매우 쉽게 이전 할 수 있습니다.
답변
R 커뮤니티는 다음과 같은 다양한 이유로 새로운 (종종 중복되는) 패키지를 계속해서 제공합니다.
1) 누군가가 무언가를 변경하거나 기존 패키지에서 사용할 수없는 것을 추가하기를 원하지만 많은 부분이 겹칩니다 (따라서 회귀를 수행하는 많은 패키지)
2) 누군가가 할당으로서의 꾸러미
3) 꾸러미 쓰기는 재미 있습니다 (당신이 그런 종류의 것을 좋아한다면)
4) 그들은 원래 꾸러미가 존재하는지 모릅니다
댓글
- 특정 예와 요점 4 : ggvis는 ggplot2와 같은 사람들이 작성했습니다. 여기서 중요한 점은 ggplot2의 사용이 너무 광범위하여 기존 코드 / 종속 패키지를 많이 깨뜨리지 않고는 변경 사항을 구현하는 것이 불가능 해졌다는 것입니다.
- 이런 종류의 기존 패키지 재창조는 자본주의 사회의 경기 침체처럼 발생합니까?
- @Peter : R의 외부인으로서 이것은 공정한 논평처럼 보이지만 (가장 드물게) 당신은 ' t 질문에 답하십시오!
- @NickCox 질문에있는 질문 중 하나에 답했습니다. :-).
- @Peter 매우 공정한 지적입니다. 따라서 stats.stackexchange.com/questions/58966/ … 에 대한 상호 참조가 적절하다고 생각합니다.
li>
ggvis
를 고려하십시오.