BellCurve 統計WEB

  • Step3. 実践編
  • 1. データの整理と可視化

1-5. 折れ線グラフ

次のデータは、「Step0. 初級編 3-1. 時系列データを見てみよう」で用いたデータです。このデータを使って、折れ線グラフの作成を行ってみましょう。

ファイルのダウンロードはこちらから

■Excelによる解析例

  1. 「neko_ensoku.csv」のデータを選択(A1セルからD10セルまで)
  2. 挿入 > すべてのグラフを表示 > 折れ線を選択
  3. 
    
    

  4. デフォルトのグラフが出力される
  5. デフォルトのグラフを加工
  6. ※気温を含めた折れ線グラフを作る場合には、第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()

1. データの整理と可視化


統計学やデータ分析を学ぶなら、大人のための統計教室 和(なごみ) [業務提携]


【BellCurve監修】統計検定®2級対策に最適な模擬問題集1~3を各500円(税込)にて販売中!

Kindleストアで配信中

統計検定®2級 模擬問題集1

500円(税込)
「Amazonで買う」ボタン

統計検定®2級 模擬問題集2

500円(税込)

統計検定®2級 模擬問題集3

500円(税込)