- 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を使わない場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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() |