@agpwhy
2021-08-18T06:35:54.000000Z
字数 1652
阅读 203
大概再写两三期就能把ggplot2简单的花活儿搞定了。
如果想把x轴和y轴换一换,其实很简单,加一个coord_flip()就行,或者ggplot2新版可以在geom_xx里面加上orientation = "y"。
ggplot(chic, aes(x = season, y = o3)) + geom_boxplot(fill = "indianred") + labs(x = "Season", y = "Ozone") + coord_flip()
或者
ggplot(chic, aes(x = o3, y = season)) + geom_boxplot(fill = "indianred", orientation = "y") + labs(x = "Ozone", y = "Season")
这样对比一下就知道效果了。
如果觉得坐标轴的刻度不满意,可以这样来修改。
这个数据里是25一大格,一共四大格,不满意的话,加上scale_x_continuous(breaks = seq(0, 80, by = 20))就是把x轴坐标改成范围0-80,20一格。
ggplot(chic, aes(x = temp, y = o3)) + geom_point() + labs(x = "Temperature (°F)", y = "Ozone Level") + scale_x_continuous(breaks = seq(0, 80, by = 20)) + coord_fixed(ratio = 1)
这样对比一下就知道效果了。
这里因为我存图片的时候设定了长宽比,看不出 coord_fixed(ratio = 1)的作用,如果不设定看默认长宽比,自己可以看一下这个作用就是让相同长度的的坐标轴代表相同大小的数。
不光可以xy方向互换,还可以改变排列方向。比如我不满意y轴是下面小,上面的大。这让我想到了金拱门,我是肯德基派的(并不是,我是一切垃圾食品爱好者)。
那我通过scale_y_reverse()把y轴颠倒一下就行。
ggplot(chic, aes(x = date, y = temp, color = o3)) + geom_point() + labs(x = "Year", y = "Temperature (°F)") + scale_y_reverse()
当然这一招只对连续型变量起效。
如果想对离散变量起效,需要使用fct_rev。
具体使用方式就留待各位探索吧。
其他针对连续型变量的的坐标轴变换包括scale_y_log10(); scale_x_log10() 还有scale_y_sqrt();scale_x_sqrt()。就是取对数/取平方根。
这里的%>%符号,是管道符号,就是把上一步的结果传输到下一步作为输入。这个是tidyverse
包的很重要的功能。这个
chic %>% dplyr::group_by(season) %>% dplyr::summarize(o3 = median(o3)) %>% ggplot(aes(x = season, y = o3)) + geom_col(aes(fill = season), color = NA) + labs(x = "", y = "Median Ozone Level") + coord_polar() + guides(fill = FALSE)
饼图最重要的就是x轴不做标注,然后加一个coord_polar()。
还可以做饼图,
这个就有点复杂了。
ggplot(chic_sum, aes(x = "", y = rel)) + geom_col(aes(fill = season), width = 1, color = NA) + labs(x = "", y = "Proportion of Days Exceeding\nthe Median Ozone Level") + coord_polar(theta = "y") + scale_fill_brewer(palette = "Set1", name = "Season:") + theme(axis.ticks = element_blank(), panel.grid = element_blank())