用ggplot2画直方图最基本的代码为:
ggplot(data=travel)+geom_histogram(aes(x=sale))
这里面travel是data frame,sale是我要画直方图的数据。
这个时候会出现warning:
这说明他默认了直方图中“柱”的个数,但是其实我是可以自己设置的。既可以通过bin的个数设置,也可以通过bin的宽度设置:
ggplot(data=travel)+geom_histogram(aes(x=sale),bins=20)
ggplot(data=travel)+geom_histogram(aes(x=sale),binwidth=20)2.对数变换
我们常常遇到的数据都是偏态的,直方图非常不美观:
这时候可以通过对数变换解决:
ggplot(data=travel)+geom_histogram(aes(x=log(sale)))
这里横坐标的值就变成了对数值,如果还希望图片中显示对应的没有对数变换过的值,可以采取如下方式:
ggplot(data=travel)+geom_histogram(aes(x=sale))+
scale_x_log10(breaks=c(10,100,300,1e3),
labels=c("10", "100","300", "1000"))
3.颜色设置
首先采用theme_classic(),去掉背景
ggplot(data=travel)+geom_histogram(aes(x=sale))+
scale_x_log10(breaks=c(10,100,300,1e3),
labels=c("10", "100","300", "1000")) +
theme_classic()
然后在geom_histogram()里面用fill设置柱子填充色,用color(也可以是col)设置边框。
ggplot(data=travel)+geom_histogram(aes(x=sale),
fill="gold",color="white")+
scale_x_log10(breaks=c(10,100,300,1e3),
labels=c("10", "100","300", "1000")) +
theme_classic()
这里颜色设置除了直接打颜色的名称,也可以采用十六进制颜色编号,以下代码也可以实现上图。
ggplot(data=travel)+geom_histogram(aes(x=sale),fill="#FBD84A",color="#FFFFFF")+
scale_x_log10(breaks=c(10,100,300,1e3),
labels=c("10", "100","300", "1000")) +
theme_classic()
如果在作图时想用一个图片的配色,但是不知道这个颜色的十六进制颜色编号,可以采取以下方法:
- 截图放到ppt里面
- 随便插入一个矩形圆形之类的形状,在设置这个形状颜色的时候,用取色器取之前图片的颜色,得到十六进制颜色编号,如图:
关于中文坐标轴名称的设置可以参考下文:
https://blog.csdn.net/weixin_45387324/article/details/99284765



