WSJ에서 가장 좋아하는 데이터 시각화 중 하나는 Chick-fil-A의 그래픽과 동성 결혼에 대한 여론입니다. WSJ는 Chick-fil-A 회장이 동성 결혼에 대한 논평을 한 후 기사에서이 그래픽을 발표했는데, 이 기사의 저자는
Chick-fil-A가 자신의 상점, 즉 고객이 대다수 대중의 의견을 가진 지역에 있었기 때문에 Chick-fil-A가 그러한 감정을 표현할 여력이 있다고 제안했습니다.

WSJ 데이터 시각화 (Chick-fil-A)

데이터 시각화에 대해 내가 좋아하는 점은 무엇일까요?

  • 그래픽 자체는 색상 팔레트와 결론에서 매우 중립적이었습니다. 결론을 이끌어 내기 위해 독자들에게 남겨 두었습니다.
  • 각 주에있는 매장 수는 쉽게보고 비교할 수있었습니다. 각 상점마다 귀여운 아이콘이 없습니다.
  • 데이터 시각화에서 모든 산만함을 제거했습니다. 외래 색상이 없으며 3 차원 효과가없고 불필요한 데이터가 없습니다.
  • 다양한 지역의 색상은 파이 차트의 범례 색상과 일치했습니다.
  • 파이 차트는
    • 세 의견 범주를 설명하기에 적합했습니다.
    • 모두 12시에 “호의”로 시작했습니다.
    • 3 차원에 있었거나 50 개의 작은 조각을 가지고 있지 않았습니다.
    • 전설은 한 번만 인쇄되었습니다.
    • 독자는 간단한 색을 사용하여 여론 조각을 빨리 구별 할 수 있습니다.

R 에서 WSJ 스타일의 데이터 시각화 구현하기

NYT의 데이터 시각화에 대한 이전 게시물처럼 R을 사용하여이 WSJ 데이터 시각화를 다시 만들고 싶었습니다.이 그래픽을 복제하려고 시도한 방법은 다음과 같습니다.

Chick-fil-A 위치 얻기

Chick-fil-A는 각 주마다이 페이지에 모든 매장 위치를 나열했습니다. 모든 주에는 해당 주에서 상점 위치가있는 별도의 페이지가 있습니다.

먼저 XML 문서에 상점이있는 모든 주를 얻었습니다.

그런다음, CSS 선택기 값을 사용하여 XML을 구문 분석하여 각 상태에 대한 URL로 모든 하이퍼 링크 텍스트를 추출했습니다.

Selector Gadget을 사용하여 특정 웹 페이지에서 객체의 CSS 선택기를 찾을 수 있습니다. 웹 스크 랩핑을 위해 rvest를 사용하는 방법에 대한 자세한 정보는 rvest의 문서를 읽으십시오.

각 상태의 모든 상대 URL에 대한 문자 벡터를 다음과 같이 얻을 수 있습니다.

따라서이 상대 URL을 최상위 도메인에 추가해야합니다.

이제 모든 주 페이지를 긁어내서 해당 페이지의 모든 매장의 우편 번호를 추출해야합니다.

이 함수는 각 URL을 다운로드하고 위치 클래스로 div를 찾고 텍스트를 텍스트로 변환 한 다음 정규 표현식을 사용하여 마지막으로 5 자리 숫자 (우편번호)를 추출합니다.

이 함수에 각 상태의 URL을 전달해야합니다. 우리는 sapply 기능을 사용하여 이를 달성 할 수 있습니다. 대략 1 ~ 2 분 정도 소요됩니다.

상점 우편 정리

위의 데이터를이 데이터 시각화에 사용할 수있게하려면 데이터 프레임에 우편 번호 목록을 넣어야 합니다.

이 단계를 저장하고 내 드롭 박스의 csv에 zip을 저장했습니다. (마지막에 원시 = 1 매개 변수가 표시되어 드롭 박스의 미리보기가 아니라 직접 파일을 가져옵니다)

잘못된 데이터가있는 경우 zipcode 패키지의 clean.zipcodes 함수를 사용하여 우편 코드를 정리 하십시오.

좌표 데이터 병합

다음으로 각 우편 번호에 좌표 데이터를 가져와야합니다. 다시 말하지만 zipcode 패키지의 데이터 세트는 해당 데이터를 제공합니다.

주별 총 매장 수 계산

이것은 dplyr 로 구현 합니다.

이 데이터 프레임은 다음과 같습니다.

여론 데이터 수집

PRRI 포털은 미국의 가치에 대한 다양한 설문 조사 데이터를 보여줍니다. 가장 최근의 데이터는 2015 년입니다. JSON 데이터를 저장할 경로를 찾기 위해 HTML을 파헤쳤습니다.

다음으로 의견을 기재 할 필드를 추가했습니다.

그런 다음과 같이 데이터를 처리하여 파이 차트에 사용할 수 있도록했습니다.

이 코드에는 그밖에 많은 것들이 있는데, 설명해 드리겠습니다.

  • 만들어진 두 개의 데이터 프레임을 묶습니다.
  • 전국 평균에 대한 데이터 행을 제거합니다.
  • 숫자 영역을 텍스트 영역으로 다시 코딩합니다.
  • 우리는 긴 형식에서 넓은 형식으로 데이터를 보급합니다. 더 자세한 설명은 tidyr 문서를 읽으십시오.
  • 의견이 두 개의 열이 되었으므로 나머지알 수없는 의견에 대한 또 다른 열을 만듭니다.
  • 모아진 모든 데이터를 긴 형태로 되가져옵니다.
  • 정렬 열을 제거합니다.
  • 의견에 대해 주문된 요소를 만듭니다. 이것은 반대 의견이 차트 상단에 표시되도록하기위한 것입니다.

결국, 우리는 다음과 같은 데이터 프레임을 얻습니다.

WSJ 데이터 시각화는 한 가지 더 유용한 작업이었습니다. 동성 결혼에 대한 반대가 가장 많은 지역의 파이 차트를 맨 위에 놓았습니다. ggplot에서 이런 종류의 물건을 처리하는 방법은 근본적인 요소를 주문하는 것입니다.

데이터 프레임이 준비되었으므로 ggplot을 사용하여 파이 차트를 만들 수 있습니다.

파이 차트 만들기

ggplot에서 원형 차트를 만들려면 먼저 누적 막대 그래프를 만든 다음 극좌표를 변경합니다. 기본 R plotting 함수를 사용할 수도 있지만 ggplot의 한계를 테스트하고 싶습니다.

여기서 설명 할 가치가있는 몇 가지 사항이 있습니다.

  • 이 프롯에서는 x 축을 갖지 않으므로 aes x 값을 1로 설정합니다.
  • aes 채우기 값을 oppo, favor 및 other 값을 갖는 변수 opi로 설정합니다.
  • 막대 너비를 1로 설정했습니다. 일부 반복 후에이 값을 선택했습니다.
  • 바 비율을 계산하기 위해 ggplot을하지 않기 때문에 stat를 identity로 설정했습니다.
  • 흰색을 하나의 색으로 설정합니다. 이것은 막대의 각 스택 사이의 구분 기호의 색입니다.
  • 크기를 0.3으로 설정하면 스택 사이에 적당한 간격이 생깁니다. 이것은 WSJ 시각화와 일치시키기 위해 그렇게했습니다.

처음으로 기본 ggplot 스택 막대 색상보기를 볼 수 있습니다. 다음으로, facet 을 추가하여 각 지역에 대한 별도의 차트를 만들고 극좌표를 추가하여 원형 차트를 만듭니다. theme_void를 추가하여 모든 눈금 선, 축 선 및 레이블을 제거했습니다.

WSJ의 데이터 시각화와 일치시키기 위해 슬라이스의 이미지 색상 선택기를 사용하여 찾은 색상을 변경해 보겠습니다.

다음으로 데이터 표를 추가하십시오. 방금 레이블을 표시하는 것이 바람직한 일부 값을 선택했습니다.

다음으로, WSJ 데이터 시각화에서 주어진대로 플롯 제목을 추가하십시오.

그리고 마지막 단계로 아래 작업을 추가 하세요

  • 지역 레이블의 배경색을 변경
  • 지역 레이블을 강조
  • 패널 색상 및 플롯 배경색 변경

 

WSJ 파이 차트 스타일과 유사하게 만드는 방법

ggplot의 원형 차트는 하나의 축을 잃어 버리기 때문에 맞춤 설정하기가 어렵다고 말해야합니다. 다음에 나는 기본 R 파이 차트를 시도 할 것입니다.

지도 만들기

지금까지 파이 차트를 WSJ 데이터 시각화와 유사하게 만드는 작업을 해봤습니다. 자, 더 재미 있는 지도 시각화를 해보겠습니다.

먼저, 데이터를 준비해 봅시다. R에는 각 상태에 대한 다양한 데이터 요소가 제공됩니다. 그래서 우리는 주, 약어, 지역 및 주 이름의 중심을 얻을 것입니다.

이 데이터 세트의 지역은 North Central 값을 갖습니다. 중서부로 바꿔봅시다.

다음으로 각 상태에 대한 다각형 데이터를 가져 와서 주 센터 데이터 프레임과 병합합니다.

ggplot을 사용하여 폴리곤 데이터를 플로팅하는 동안 폴리곤 데이터 프레임의 순서 열이 정렬되었는지 확인해야합니다. 그렇지 않으면 모양이 엉망이됩니다.

몇 가지 준비 작업을 마치면 기본지도를 만들어 봅시다.

각 주에있는 레스토랑수와 함께 다각형 데이터 프레임에 가입했습니다. 또한 스택 막대 그래프와 유사하게 각 상태를 흰색으로 구분하여 다음과 같이 표시합니다.

다시 이미지 색상 선택기를 사용하여 WSJ 데이터 시각화에서 색상을 선택하고 수동으로 각 영역에 할당했습니다. 범례도 삭제했습니다.

그런 다음 모든 산만 함을 제거하고 배경색을 변경해봅니다.

다음은 식당 수에 동그라미를 추가하는 것입니다.

여기에는 많은 것들이 있습니다. 먼저 geom_point를 사용하여 각 상태의 중앙에 원을 만듭니다. 원의 크기는 각 주에있는 레스토랑의 수에 의해 결정됩니다. 획 매개 변수는 원의 두께를 제어합니다. 우리는 또한이 기하 구조에 새로운 미학을 창출하기 위해 inherit.aes = FALSE를 사용합니다.

문서에서 말하는 것처럼 scale_size_area는 매우 중요합니다. scale_size는 영역을 조절하고ㅍscale_radius는 반지름을 조절합니다. 크기 미학은 점과 텍스트에 가장 일반적으로 사용되며 사람이 반경이 아닌 점의 영역을 인식하므로 최적의 인식을 제공합니다. scale_size_area는 값 0이 크기 0에 매핑되도록합니다. 반경이 아닌 면적을 사용하십시오.

원의 크기에 대한 범례을 제거하고 WSJ 그래픽에 포함된 범례가 없어 졌으므로 다시 추가해 보도록 하겠습니다. 이는 어렵고 정확하지 않았습니다. 어떤 크기로 놀았고 다른 원의 반지름에 맞추기 위해 눈을 맞추었습니다.

제목을 추가합시다.

주와 원형 차트 병합

이것은 모두의 가장 쉬운 단계입니다. grid.arrange 함수를 사용하여 두 개의 플롯을 병합하여 R에서 자체 WSJ 데이터 시각화를 만듭니다.

최종 완성된 시각화는 다음과 같습니다.

 

동성 결혼에 반대하는 지역에 더 큰 동그라미가있는 것처럼 보입니다. 퓨 리서치 센터 자료에 따르면, 공화당 원의 33%만이 동성 결혼을 선호한다고한다. 따라서 카운티별로 2016년 미국 대통령 선거를 계획하고 Chick-fil-A 매장의 각 우편 번호를 줄이면 도널드 트럼프 카운티에 더 많은 상점이 있는지 여부를 알 수 있습니다.

작성해 봅시다. 우선, 카운티 수준의 데이터를 가져옵니다. Tony McGovern은 이미 모든 노력을 기울였습니다.

군지도 다각형 데이터 가져 오기

카운티 결과로 다각형에 Join 하십시오.

결과 및 카운티 도표

이제 공화당과 민주당 투표 지역에 대해 빨강 색과 파랑 색으로지도를 채웁니다.

모든 산만 함을 제거하고 우편 번호별로 상점 위치를 추가합시다.

우리가 원하고자 하는 WSJ 스타일의 차트인가요? 물론, 뭔가를 엉망으로 만들었을 수도 있습니다. 그러나, 이 차트를 바탕으로 두가지 결론을 내릴 수 있습니다.

  • 집계는 존재하지 않는 패턴을 보도록 오도 할 수 있습니다.
  • 사람의 정치적 신분이나 견해는 그가 좋아하는 음식과는 아무런 관련이 없습니다. 그리고 Chick-fil-A 지도자는 그것을 알고 있습니다.

 

참조: The Wall Street Journal Data Visualization

(Visited 31 times, 1 visits today)