ggplot2-棒グラフと折れ線グラフ

より良いggplot学習ブログ投稿

著者:Li
Pidongメール:[email protected]
日付:2016年3月7日

http://blog.csdn.net/tanzuozhev/article/details/50822204

この記事は、http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_(
ggplot2 )に基づいて私自身の理解を追加します。ggplot2で受け入れられるデータタイプはdata.frame構造である必要があります。

x軸としての離散データ

棒グラフの場合、高さを設定するための2つの異なるオプションがあります。

  1. x、yの対応する値はグラフ上の実際の値、xは横軸のラベル、yは縦軸の高さです。このとき、geom_bar(stat="identity")レイヤーとして使用されます。
library(ggplot2)
dat <- data.frame(
  time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
  total_bill = c(14.89, 17.23)
)
dat
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
##     time total_bill
## 1  Lunch      14.89
## 2 Dinner      17.23
 
  
  
  • 1
  • 2
  • 3

time可変係数として、
total_billy軸の実際の値が高さを表すため、x軸のラベルは塗りつぶしの色を表します

ggplot(data=dat, aes(x=time, y=total_bill)) +
    geom_bar(stat="identity")
 
  
  
  • 1
  • 2

# 以time作为颜色填充
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
    geom_bar(stat="identity")
 
  
  
  • 1
  • 2
  • 3

## 等同于
 ggplot(data=dat, aes(x=time, y=total_bill)) +
    geom_bar(aes(fill=time), stat="identity")
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

# 添加黑色轮廓线
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
    geom_bar(colour="black", stat="identity")
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

# 去除图例
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
    geom_bar(colour="black", stat="identity") +
    guides(fill=FALSE)
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# 添加其他信息 title, narrower bars, fill color, and change axis labels
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) + 
    geom_bar(colour="black", fill="#DD8888", width=.8, stat="identity") + 
    guides(fill=FALSE) +
    xlab("Time of day") + ylab("Total bill") +
    ggtitle("Average bill for 2 people")
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ここに写真の説明を書いてください

  1. データのセットを入力し、x軸とy軸の情報をカウントします。x軸は重複を削除するためのデータの保持値であり、y軸はx軸に対応する繰り返しの数です。軸。geom_bar(stat="bin")新しいレイヤーとして使用します。
# 使用reshape2包的tips数据集
library(reshape2)
# 数据展示
head(tips)
 
  
  
  • 1
  • 2
  • 3
  • 4
##   total_bill  tip    sex smoker day   time size
## 1      16.99 1.01 Female     No Sun Dinner    2
## 2      10.34 1.66   Male     No Sun Dinner    3
## 3      21.01 3.50   Male     No Sun Dinner    3
## 4      23.68 3.31   Male     No Sun Dinner    2
## 5      24.59 3.61 Female     No Sun Dinner    4
## 6      25.29 4.71   Male     No Sun Dinner    4
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

ここで、yではなく入力変数xのみが使用され、x軸は、左側のデータ重複排除Sun Sat Thur Fri、そのy軸に対応する繰り返し回数のstat="bin"代わりに使用されstat="identity"ます。

# Bar graph of counts
ggplot(data=tips, aes(x=day,fill=day)) +
    geom_bar(stat="bin")
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

## 等同于
ggplot(data=tips, aes(x=day)) +
   geom_bar()# stat参数默认为 bin
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

折れ線グラフ

時間:x軸
total_bill:y軸

# Basic line graph
ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
    geom_line()
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

## This would have the same result as above
# ggplot(data=dat, aes(x=time, y=total_bill)) +
#     geom_line(aes(group=1))

# 折线图添加点
ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ここに写真の説明を書いてください

# 修改颜色
# Change line type and point type, and use thicker line and larger points
# Change points to circles with white fill
ggplot(data=dat, aes(x=time, y=total_bill, group=1)) + 
    geom_line(colour="red", linetype="dashed", size=1.5) + 
    geom_point(colour="red", size=4, shape=21, fill="white")
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ここに写真の説明を書いてください

# Change the y-range to go from 0 to the maximum value in the total_bill column,
# and change axis labels
# 修改y轴的范围,从0到最大值
ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
    geom_line() +
    geom_point() +
    expand_limits(y=0) +# 修改y轴的范围,从0到最大值 expand_limits(y = c(1, 9)),y从1到9
    xlab("Time of day") + ylab("Total bill") +
    ggtitle("Average bill for 2 people")
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

ここに写真の説明を書いてください

その他のデータ変数

新しいデータ、可変性別がここに追加されます

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")),
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
    total_bill = c(13.53, 16.81, 16.24, 17.42)
)
dat1
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
##      sex   time total_bill
## 1 Female  Lunch      13.53
## 2 Female Dinner      16.81
## 3   Male  Lunch      16.24
## 4   Male Dinner      17.42
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

棒グラフ

可変マッピング
時間:x軸
性別:カラー塗りつぶし
total_bill:y軸。

# 这里涉及了几个图形的位置摆放
# 默认为堆叠(Stacked bar graph) 
ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
    geom_bar(stat="identity")
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# 位置摆放, position_dodge()为分开摆放

ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
    geom_bar(stat="identity", position=position_dodge())
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# Change colors
ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
    geom_bar(stat="identity", position=position_dodge(), colour="black") +
    scale_fill_manual(values=c("#999999", "#E69F00"))# 修改填充的颜色,填充的颜色数组大小必须与fill(sex)的大小一致
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

変数のマッピングを変更します。x軸は性別で、色は時間で塗りつぶされます

# Bar graph, time on x-axis, color fill grouped by sex -- use position_dodge()
ggplot(data=dat1, aes(x=sex, y=total_bill, fill=time)) +
    geom_bar(stat="identity", position=position_dodge(), colour="black")
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

折れ線グラフ

可変マッピング
時間:x軸
性別:線の色
total_bill:y軸。
複数の線を描画するには、データをsexグループ化する必要があります。ここでグループすると、Female1本とMale1本の2本の線が作成されます

# 简单图
ggplot(data=dat1, aes(x=time, y=total_bill, group=sex)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# 加入颜色
ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, colour=sex)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# Map sex to different point shape, and use larger points
ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

# Use thicker lines and larger points, and hollow white-filled points
ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex)) + 
    geom_line(size=1.5) + 
    geom_point(size=3, fill="white") +
    scale_shape_manual(values=c(22,21))# 修改shape的类型 
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

ここに写真の説明を書いてください

変数のマッピング関係を変更します。時間ごとにグループ化し、ランチグループ、ディナーグループ

ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

棒グラフ

ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) + 
    geom_bar(colour="black", stat="identity",
             position=position_dodge(),
             size=.3) +                        # Thinner lines
    scale_fill_hue(name="Sex of payer") +      # Set legend title
    xlab("Time of day") + ylab("Total bill") + # Set axis labels
    ggtitle("Average bill for 2 people") +     # Set title
    theme_bw()
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ここに写真の説明を書いてください

折れ線グラフ

ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex, colour=sex)) + 
    geom_line(aes(linetype=sex), size=1) +     # Set linetype by sex
    geom_point(size=3, fill="white") +         # Use larger points, fill with white
    expand_limits(y=0) +                       # 设置x y轴的起止范围,这里是y从0开始
    scale_colour_hue(name="Sex of payer",      # Set legend title
                     l=30)  +                  # Use darker colors (lightness=30)
    scale_shape_manual(name="Sex of payer",
                       values=c(22,21)) +      # Use points with a fill color
    scale_linetype_discrete(name="Sex of payer") +
    xlab("Time of day") + ylab("Total bill") + # Set axis labels
    ggtitle("Average bill for 2 people") +     # Set title
    theme_bw() +                          # 设置主题
    theme(legend.position=c(.7, .4))           # 设置图例的位置
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

ここに写真の説明を書いてください

この折れ線グラフは、色scale_colour_hue、形状scale_shape_manual、線種のscale_linetype_discrete3つの属性を使用します凡例は3つあるはずですが、凡例の名前が同じであるため、1つのカテゴリに分類されます。3つの凡例の名前が異なる場合は、3凡例が表示されます。

ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex, colour=sex)) + 
    geom_line(aes(linetype=sex), size=1) +     # Set linetype by sex
    geom_point(size=3, fill="white") +         # Use larger points, fill with white
    expand_limits(y=0) +                       # 设置x y轴的起止范围,这里是y从0开始
    scale_colour_hue(name="Sex of payer1",      # Set legend title
                     l=30)  +                  # Use darker colors (lightness=30)
    scale_shape_manual(name="Sex of payer2",
                       values=c(22,21)) +      # Use points with a fill color
    scale_linetype_discrete(name="Sex of payer3") +
    xlab("Time of day") + ylab("Total bill") + # Set axis labels
    ggtitle("Average bill for 2 people") +     # Set title
    theme_bw() +                          # 设置主题
    theme(legend.position=c(.7, .4))           # 设置图例的位置
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

ここに写真の説明を書いてください

x軸としての連続データ

新しいデータ

datn <- read.table(header=TRUE, text='
supp dose length
  OJ  0.5  13.23
  OJ  1.0  22.70
  OJ  2.0  26.06
  VC  0.5   7.98
  VC  1.0  16.77
  VC  2.0  26.14
')
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

線量はx軸であり、線量は数値であり、連続変数と見なされます。

ggplot(data=datn, aes(x=dose, y=length, group=supp, colour=supp)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

線量を連続変数としてとる場合、線量には0.5、1.0、2.0の3つのタイプしかない場合でも、x軸は0.5、1.0、1.5、2.0、またはそれ以上のポイントを示す必要があります。

x軸としての離散データ

ここでは、線量データを因子タイプに変換します。これは離散タイプになります。0.5、1.0、および2.0は単なるカテゴリ名です。

# Copy the data frame and convert dose to a factor
datn2 <- datn
datn2$dose <- factor(datn2$dose)
ggplot(data=datn2, aes(x=dose, y=length, group=supp, colour=supp)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ここに写真の説明を書いてください

# 直接在ggplot中转换格式也是可以的
ggplot(data=datn, aes(x=factor(dose), y=length, group=supp, colour=supp)) +
    geom_line() +
    geom_point()
 
  
  
  • 1
  • 2
  • 3
  • 4

ここに写真の説明を書いてください

棒グラフには連続データと離散データを使用し、同じグラフを取得します。

# Use datn2 from above
ggplot(data=datn2, aes(x=dose, y=length, fill=supp)) +
    geom_bar(stat="identity", position=position_dodge())
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

# 直接使用factor转化
ggplot(data=datn, aes(x=factor(dose), y=length, fill=supp)) +
    geom_bar(stat="identity", position=position_dodge())
 
  
  
  • 1
  • 2
  • 3

ここに写真の説明を書いてください

著者:Li
Pidongメール:[email protected]
日付:2016年3月7日

おすすめ

転載: blog.csdn.net/weixin_41792162/article/details/108326177