データビジュアライゼーション
前回のポストと同様に、他項目の棒グラフを見やすくする方法です。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” :点線の色を決めています。
)