浏览文件内容

更新 'chap3/ggplot_geom.md'

三藏唐 6 年之前
父节点
当前提交
c9062473c2
共有 1 个文件被更改: 114 次插入, 1 次删除
  1. 114 1
      chap3/ggplot_geom.md

+ 114 - 1
chap3/ggplot_geom.md

@@ -1,4 +1,4 @@
-### 几何图形
+### 几何图形元素及其属性
 
 
 #### 几何图形的视觉属性
 #### 几何图形的视觉属性
 
 
@@ -44,7 +44,120 @@ ggplot(linetypes, aes(0, y)) +
 ```
 ```
 上面标准的5个线型对应的16进制数分别为:44, 13, 1343, 73, 2262.
 上面标准的5个线型对应的16进制数分别为:44, 13, 1343, 73, 2262.
 
 
+##### 尺寸(size)
+
+尺寸的单位是毫米(mm)。点的尺寸指的是点的直径,线的尺寸指的是线的宽度。(?)
+
+#### 线端(lineend)和线连接(linejoin)
+线端和线连接是线的属性。
+lineend有 “round”, “butt” (默认)”,“square”三种。
+
+```{r}
+df <- data.frame(x = 1:3, y = c(4, 1, 9))
+base <- ggplot(df, aes(x, y)) + xlim(0.5, 3.5) + ylim(0, 10)
+base +
+  geom_path(size = 10) +
+  geom_path(size = 1, colour = "red")
+
+base +
+  geom_path(size = 10, lineend = "round") +
+  geom_path(size = 1, colour = "red")
+
+base +
+  geom_path(size = 10, lineend = "square") +
+  geom_path(size = 1, colour = "red")
+```
+线连接有:“round” (the default), “mitre”, or “bevel”三种。
+
+```{r}
+df <- data.frame(x = 1:3, y = c(9, 1, 9))
+base <- ggplot(df, aes(x, y)) + ylim(0, 10)
+base +
+  geom_path(size = 10) +
+  geom_path(size = 1, colour = "red")
+
+base +
+  geom_path(size = 10, linejoin = "mitre") +
+  geom_path(size = 1, colour = "red")
+
+base +
+  geom_path(size = 10, linejoin = "bevel") +
+  geom_path(size = 1, colour = "red")
+```
+
+#### 点的形状(shape)
+
+* 点的形状用整数表示[0,25]
+```{r}
+shapes <- data.frame(
+  shape = c(0:19, 22, 21, 24, 23, 20),
+  x = 0:24 %/% 5,
+  y = -(0:24 %% 5)
+)
+ggplot(shapes, aes(x, y)) +
+  geom_point(aes(shape = shape), size = 5, fill = "red") +
+  geom_text(aes(label = shape), hjust = 0, nudge_x = 0.15) +
+  scale_shape_identity() +
+  expand_limits(x = 4.1) +
+  scale_x_continuous(NULL, breaks = NULL) +
+  scale_y_continuous(NULL, breaks = NULL)
+```
+* 如果用字符绘图符号,直接用字符即可。
+* "."代表一个单像素的正方形。
+* NA代表空,在该位置不绘制任何符号。
+
+#### 点的stroke和填充色(fill)
+点可以有填充色和stroke两个属性,点的尺寸是两者的和。
+
+```{r}
+sizes <- expand.grid(size = (0:3) * 2, stroke = (0:3) * 2)
+ggplot(sizes, aes(size, stroke, size = size, stroke = stroke)) +
+  geom_abline(slope = -1, intercept = 6, colour = "white", size = 6) +
+  geom_point(shape = 21, fill = "red") +
+  scale_size_identity()
+```
+
 #### ggplot图形元素
 #### ggplot图形元素
 
 
 ##### 点(point)
 ##### 点(point)
 
 
+
+##### 文本(text)
+
+文本用geom_text函数绘制。
+
+* 字体(font family)
+英文字体中,“sans” (默认), “serif”, or “mono”这三种字体据说普遍适用。
+aes(family="mono")
+
+```{r}
+df <- data.frame(x = 1, y = 3:1, family = c("sans", "serif", "mono"))
+ggplot(df, aes(x, y)) +
+  geom_text(aes(label = family, family = family))
+```
+中文字体的显示经常出问题,新版本的Rstudio可能已经解决了这个问题。但在不同的图形设备或不同的平台(windows、linux、mac)中可能还会有问题,关于如何解决中文问题,将专门介绍。
+
+* 字形(font face)
+这个不知道应该怎么翻译,它值得是黑体、斜体等,有时也叫字体,与上面的font family显然不同,但font family也翻译成字体,有点晕。
+但使用时记住这四种就行了:plain(不变)、bold(加粗)、italic(倾斜)、bold.italic(加粗带倾斜)
+aes(fontface="italic")
+
+```{r}
+df <- data.frame(x = 1:4, fontface = c("plain", "bold", "italic", "bold.italic"))
+ggplot(df, aes(1, x)) +
+  geom_text(aes(label = fontface, fontface = fontface))
+```
+* 位置(justification)
+位置调整用名称或数字都行。名称:“top”, “middle”, “bottom”, “left”, “center”, “right”,对应的数值是:
+
+水平:top = 1, middle = 0.5, bottom = 0
+垂直:left = 0, center = 0.5, right = 1
+
+```{r}
+just <- expand.grid(hjust = c(0, 0.5, 1), vjust = c(0, 0.5, 1))
+just$label <- paste0(just$hjust, ", ", just$vjust)
+
+ggplot(just, aes(hjust, vjust)) +
+  geom_point(colour = "grey70", size = 5) +
+  geom_text(aes(label = label, hjust = hjust, vjust = vjust))
+```