- 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()














