R语音ggplot2绘制好看的分组散点图

我们以iris数据集为例,该数据集包括花萼的长度和宽度,花瓣的长度和宽度,以及物种,如下图:

本文我们要绘制不同物种下花萼的长度和宽度的分布情况,以及二者之间的相关性关系。

1. 首先载入ggplot2包,

library(ggplot2)

2. 然后进行ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())绘制,在绘制中第一个参数是数据,第二个参数是数据映射,是绘制的全局变量,其中包含的参数有x,y,color,size,alpha,shape等。

例如:ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)),然后通过快捷散点绘制

+geom_point(size = 2.0, shape = 16),颜色代表不同的物种,如下图:



3. 上面显示的是最原始的散点绘制,通过颜色区分不同的物种,那么如何进行效果的提升呢?

首先是可以进行分面,使得不同物种的对比效果更为显著,这里使用+facet_wrap( ~ Species),效果如下:


4. 通过分面后对比效果好了不少,如果想看下不同物种下花萼长度与宽度的关系呢?可以使用+geom_smooth(method = "loess"),效果图如下:


5. 通过上面的操作效果好了很多,但是还是感觉不够高大上,那我们可以使用library(ggthemes)这个包进行精修一下,通过修改theme,使用+theme_solarized(),效果如下:


还有更多的theme选择,例如+theme_wsj(),效果如下:


这样我们的图是不是高大上了很多呢,所以其实数据可视化也没有多难。最后给下源码:

library(ggthemes)
library(ggplot2)

ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
  geom_point(size = 2.0, shape = 16) +
  facet_wrap( ~ Species) +
  geom_smooth(method = "loess")+

  theme_wsj()

如果有需要有偿作图的,可以加我的QQ289251712联系我。


好的,以下是你提出的问题的回答: 1. 数据导入 可以使用read.csv()函数将“近十年销售额.csv”文件中的数据导入到data中。代码如下: ``` data <- read.csv("近十年销售额.csv", header = TRUE, sep = ",") ``` 2. 绘制直方图 使用ggplot2包中的qplot()函数可以轻松绘制直方图。代码如下: ``` library(ggplot2) sales_by_year <- aggregate(sales ~ year, data, sum) qplot(year, sales, data = sales_by_year, geom = "histogram", binwidth = 10000000, fill = I("blue"), col = I("black"), main = "Sales distribution by year", xlab = "Year", ylab = "Sales") ``` 3. 数据统计 可以使用ifelse()函数将每个月份分为四个季度,然后使用aggregate()函数对每个季度的销售额进行统计。代码如下: ``` data$quarter <- ifelse(data$month %in% c(1, 2, 3), "Spring", ifelse(data$month %in% c(4, 5, 6), "Summer", ifelse(data$month %in% c(7, 8, 9), "Autumn", "Winter"))) sales_by_quarter <- aggregate(sales ~ year + quarter, data, sum) ``` 4. 绘制条形图 使用ggplot2包中的geom_bar()函数可以绘制条形图。代码如下: ``` ggplot(sales_by_quarter[sales_by_quarter$year %in% c(2018:2022), ], aes(x = quarter, y = sales, fill = factor(year))) + geom_bar(stat = "identity", position = "dodge") + labs(title = "Sales by quarter from 2018 to 2022", x = "Quarter", y = "Sales") + scale_fill_discrete(name = "Year") ``` 5. 绘制饼图 使用ggplot2包中的coord_polar()函数可以将条形图转化为饼图。代码如下: ``` ggplot(sales_by_quarter[sales_by_quarter$year == 2022, ], aes(x = "", y = sales, fill = quarter)) + geom_bar(stat = "identity", width = 1) + coord_polar(theta = "y") + labs(title = "Sales by quarter in 2022", fill = "Quarter") ``` 6. 绘制箱线图 使用ggplot2包中的geom_boxplot()函数可以绘制箱线图。代码如下: ``` ggplot(data, aes(x = month, y = sales)) + geom_boxplot() + labs(title = "Sales distribution by month", x = "Month", y = "Sales") ``` 7. 绘制散点图 使用ggplot2包中的geom_point()函数可以绘制散点图。代码如下: ``` ggplot(data[data$year == 2013, ], aes(x = month, y = sales)) + geom_point() + labs(title = "Sales in 2013 by month", x = "Month", y = "Sales") ``` 8. 绘制散点矩阵图 使用GGally包中的ggpairs()函数可以绘制散点矩阵图。代码如下: ``` library(GGally) ggpairs(data, aes(cols = c("sales", "quarter"), diag = list(continuous = wrap("density", alpha = 0.5)))) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值