データビジュアライゼーション

前回のポストと同様に、他項目の棒グラフを見やすくする方法です。Rのggplotを使って、Cleveland’s dot plotを作成します。

使用データ

今回つかうデータは、農林水産省の獣医師の届出状況を使います。2019年12月のデータです。

https://www.maff.go.jp/j/tokei/kouhyou/animal/index.html

エクセルで集計します。

まずはデータの読み込みと、日本語フォントの設定と、ggplotのラベル順番のサポート列を作成します。

library(tidyverse)
windowsFonts(meiryo = windowsFont("Meiryo UI"))

df <- read.csv("small_animal.csv", colClasses=c("character","numeric"))
df$smallanimalvet <- as.numeric(df$smallanimalvet)
df$n <- 47:1

さっそく、Cleveland’s dot plotをggplotで作成します。

ggplot(df, aes(x=reorder(pref,n), y=smallanimalvet)) +
  geom_segment(aes(x=reorder(pref,n),
                   xend=reorder(pref,n),
                   y=0,
                   yend=3000),  
               linetype=2,
               size=0.3,
               color="grey") +
  geom_point(aes(color=n)) +
  scale_y_continuous(limits=c(0,3000),expand = c(0, 0))+
  coord_flip() +
  xlab("")+
  ylab("")+
  ggtitle("小動物獣医師数")+
  scale_color_gradient2(low = "rosybrown1",
                        mid = "cornflowerblue",
                        high = "darkslategray3",
                        midpoint = 25)+
  theme_minimal()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5),
        axis.line=element_blank(),
        #axis.title.x = element_blank(),
        #axis.title.y = element_blank(),
        #axis.text.x = element_blank(),
        axis.text.y = element_text(size=6, family="meiryo", hjust=1),
        #axis.ticks.x = element_blank(),
        #axis.ticks.y = element_blank(),
        #panel.background = element_blank(),
        #panel.border = element_blank(),
        panel.grid.major.x = element_line( size=.1, color="grey" ),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.x = element_blank(),
        #panel.grid.minor.y = element_line( size=.1, color="grey" ),
        plot.margin = unit(c(0.5,1,0,0), "cm")
  )

コード解説

geom_segmentで点線を表現しています。

geom_segment(aes(x=reorder(pref,n),
xend=reorder(pref,n),
y=0,
yend=3000), :人数のリミットを設定します。
linetype=2, :点線のタイプを使っています。
size=0.3,   :点線のサイズを決めています。
color=”grey” :点線の色を決めています。
)

Categories:

category