- Step3. 実践編
- 1. データの整理と可視化
1-5. 折れ線グラフ
次のデータは、「Step0. 初級編 3-1. 時系列データを見てみよう」で用いたデータです。このデータを使って、折れ線グラフの作成を行ってみましょう。
ファイルのダウンロードはこちらから
- (日本語)neko_yasai.csv
- (英語)neko_yasai_eng.csv
■Excelによる解析例
- 「neko_ensoku.csv」のデータを選択(A1セルからD10セルまで)
- 挿入 > すべてのグラフを表示 > 折れ線を選択
- デフォルトのグラフが出力される
- デフォルトのグラフを加工
※気温を含めた折れ線グラフを作る場合には、第2軸を使った組み合わせグラフを選択します。A1セルからE10セルまでを選択し、挿入 > すべてのグラフを表示 > ユーザー設定の組み合わせの「グラフの種類」と「第2軸」を図のように設定します。
赤、緑、黄緑のグラフから野菜の高さを見る場合には左側の軸を使います。灰色のグラフから気温を見る場合には右側の軸を使います。
■Rによる解析例
・その1(packageを使わない場合)
library(lubridate) dat <- read.csv("neko_yasai_eng.csv", header=T) #データの読み込み dat$day <- ymd(dat$Date) #Dateをchr型からDate型に変換 plot(dat$day, dat$Tomato, #plot関数にデータをセット type = "l", lwd=3, col = "red", #折れ線グラフを指定、線の太さを指定、線の色を指定 ylim = c(0, 80), #y軸を0から80までにセット xaxt = "n", #x軸のラベルを削除 xlab = "Date", ylab = "Growth (cm)") #x軸ラベルとy軸ラベルを設定 par(new=T) #グラフを重ねる plot(dat$day, dat$Edamame, type = "l", lwd=3, col = "green4", ylim = c(0, 80), xaxt = "n", xlab = "", ylab = "") par(new=T) plot(dat$day, dat$Cucumber, type = "l", lwd=3, col = "lightgreen", ylim = c(0, 80), xaxt = "n", xlab = "", ylab = "") axis.Date(1, Day, at = seq(min(dat$day), max(dat$day), by = "days"), format = "%Y-%m-%d") #x軸にyyyy-mm-ddの日付型のデータを入れる legend("topleft", #凡例の位置を設定 legend = c(colnames(dat)[2:4]), #凡例に記載する項目を設定 col = c("red", "green4", "lightgreen"), #凡例の色を設定 lwd = 1, lty = 1) #凡例内の線の太さと種類を設定
■Rによる解析例
・その2(ggplot2を使う場合)
library(ggplot2) library(reshape2) dat <- read.csv("neko_yasai_eng.csv", header=T) #データの読み込み dat2 <- dat[,c(2,3,4,6)] #datから必要な列を抽出 dat3 <- melt(dat2, id = "day") #データを縦に並べかえる G <-ggplot(dat3, aes(x = day, y = value , color = variable)) + #x軸、y軸、折れ線グラフの色のデータを設定 geom_line(size = 1.5) + #線の太さを設定 scale_color_manual(values = c("red", "green4", "lightgreen")) + #線の色を設定 labs(x = "Date", y = "Frowth (cm)", color = "Vegetable") + #グラフのラベルを設定 scale_x_date(date_breaks = "2 days", #x軸を2日刻みにする date_labels = "%Y-%m-%d") + #x軸をyyyy-mm-dd表示にする theme(panel.grid.major = element_blank(), #背景のgridの削除 panel.grid.minor = element_blank(), #背景のgridの削除 panel.background = element_blank(), #背景色の削除 axis.line = element_line(colour = "black"), #グラフの線の色を指定 axis.ticks = element_line(colour = "black"), #グラフの目盛(ticks)の色を指定 axis.text = element_text(size=14), #グラフの目盛のフォントサイズを指定 axis.title = element_text(size=16), #グラフのラベルのフォントサイズを指定 legend.text = element_text(size=14), #凡例のフォントサイズを指定 legend.title = element_text(size=16)) #凡例のラベルのフォントサイズを指定 plot(G)
■Pythonによる解析例
・その1(matplotlibを使う場合)
import pandas as pd import matplotlib.pyplot as plt dat = pd.read_csv("neko_yasai_eng.csv", index_col=0) #データの読み込み、indexを0列目にする dat2 = dat.iloc[:,0:3] #datから必要な列を抽出 fig, ax = plt.subplots() #グラフの大枠の作成 ax.plot(dat["Tomato"], color='red', linestyle='-') #データの列を指定、線の色を指定、線の種類を指定 ax.plot(dat["Edamame"], color='green', linestyle='-') ax.plot(dat["Cucumber"], color='lightgreen', linestyle='-') plt.legend(dat2.columns, fontsize=10, loc='upper left', bbox_to_anchor=(1, 1)) #凡例の項目を指定、フォントを指定、位置を指定 plt.ylabel("Growth (cm)", fontsize=10) #y軸ラベルを設定、フォントサイズの設定 plt.xticks(rotation=45) #x軸を45度回転 plt.tight_layout() #グラフの要素が画面からはみ出さないようにする plt.show()
■Pythonによる解析例
・その2(matplotlib + seabornを使う場合)
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns dat = pd.read_csv("neko_yasai_eng.csv") dat2 = dat.iloc[:,0:4] dat3 = pd.melt(dat2, id_vars = "Date") #データを縦に並べかえる sns.set_style("white") #グラフのスタイルを指定 sns.lineplot(x="Date", y="value", hue="variable", data = dat3, palette=['red', 'green', 'lightgreen']) #折れ線グラフのx軸、y軸、色分けするデータ、グラフの元となるデータ、グラフの色を設定 plt.xlabel("") plt.ylabel("Growth (cm)", fontsize=12) plt.xticks(rotation=45) plt.tight_layout() plt.legend(title='Vegetable') #凡例のタイトルを設定 plt.show()