缩放,zooming
三种方法控制plot limits:1)调整绘图数据;2)设置每个scale的limits;3)在coord_cartesian()(笛卡尔坐标)中设置xlim和ylim参数。
两种方法放大(zoom in)图片:通过scales或通过coordinate systems。
通常最好使用坐标系统方法:coord_cartesian(),这种方法不会像scales方法:scale_x/y_continuous()之类,改变底层数据;在单个scale上设置limits参数,例如上文提到的scale_x/y_continuous()函数,用这种方法基本相当于对数据取子集,也就是超过limits范围的observations将默认被强制为NA,也就是被丢弃(如果有数据点因为这个被丢弃的话,默认会有提示)。
coord_cartesian(
xlim = NULL,
ylim = NULL,
expand = TRUE,
default = FALSE,
clip = "on"
)
xlim、ylim:坐标轴范围,例如:c(100,200)
expand:默认TRUE,为坐标轴limits增加一个小的扩展因子,确保数据和轴不会重叠。如果为FALSE,limits完全从数据本身或者xlim/ylim获取。
default:这是默认坐标系统吗?如果为FALSE,用另一个坐标系统替换该系统时会提示用户该坐标系统将被改变,否则不会产生警告。目前不是很理解
clip:绘图应该被裁剪到绘图面板的范围内吗?on为是,off为否,如果为否,将允许将数据点绘制到plot的任何地方,如果数据点超过了limits,那这些点可能会出现在坐标轴、图例、图片标题、图片边缘上。从这里进一步理解这个函数不会改变底层数据的意思,对于超出限制的数据点只是不显示,并不代表把数据扔掉了。
一个实用小例子是:需要互相对比的多张图片最好使用相同的limits,可以通过scales方法设置,当然也可以通过分面的方法,前者更普遍适用。
主题,theme
theme用来定制plot的non-data元素。ggplot2默认包含8个theme,更多的主题在ggthemes包里。
ggplot2默认的8个主题:
为什么默认主题有一个灰色的背景?*这是一个深思熟虑的选择,因为它将数据向前推送,同时仍然使网格线可见。白色的网格线是可见的(这很重要,因为它们显著地帮助判断位置),但它们几乎没有视觉影响,我们可以很容易地忽略它们。灰色背景给plot提供了与文本类似的印刷颜色,确保图形符合文档的流程,而不会跳出明亮的白色背景。最后,灰色背景创造了一个连续的色彩域,确保plot被视为一个单一的视觉实体。
主题的单个组成部分,例如y轴上字体的大小和颜色,可以被单独控制,更多细节请看ggplot2这本书。
网友评论