R中的散点图
R中的散点图是绘制两个向量变量彼此相对的图的最简单形式。
这些对于了解变量相对于另一个变量的分布和密度很有用。
假设您希望根据孩子的年龄绘制其身高,并查看给定年龄段的大多数孩子的身高,最好使用散点图。
这些也可以应用于肺活量与运动时间,一天中的时间与员工登录,每月中的一周与每日销售额等情况。
我们将首先使用R的基本软件包绘制一些散点图,然后再使用R在3D模式下可视化相似的图形。
在R中创建散点图
可以使用plot(x,y)
命令创建最简单的散点图,其中x和y是向量。
让我们来看一个使用一些内置R数据集的示例。
R中的鸢尾花数据集是关于鸢尾花的5个变量的150个观测值的集合。
这些变量指示花朵的尺寸,例如萼片长度/宽度和花瓣长度/宽度。
让我们尝试根据观察到的花瓣长度绘制花朵的花瓣宽度。
> plot(iris$Petal.Length,iris$Petal.Width)
这是我们的第一个散点图。
该图易于阅读,并告诉我们某些花瓣的长度为1至2厘米,花瓣宽度小于1厘米-更精确地说约为0.5厘米。
此外,大多数花瓣较长(3-7厘米),并且倾向于有较宽的花瓣,大部分簇集在1-2厘米左右。
我们也可以清楚地说,花瓣的长度和宽度之间存在微弱的线性关系。
我们如何使这些图更具参考价值?观察虹膜数据集有3种花。
我们可以有一个散点图,用上面选择的相同变量绘制3种具有3种不同颜色的物种。
您所需要做的就是在绘制图形时对col
参数使用一个unclass()
函数。
unclass函数将iris $species作为参数,并根据此点分配图中点的颜色。
我们还添加了标签,标题和图例,以使图形看起来更具吸引力。
让我们看一下代码片段。
plot(iris$Petal.Length, iris$Petal.Width, pch=20, col=c("red","green","blue")[unclass(iris$Species)], xlab="Petal Length", ylab="Petal Width" ,main="Iris length vs width by species") legend("topleft",c("Setosa","Virginica","Versicolor"), pch=20, col=c('red','green','blue'), title="Species")
该图所包含的信息远远超过我们上面创建的简单信息,例如– Setosa是批次中最小的物种,而Versicolor是最大的物种。
此外,还有一些维珍妮卡虹膜,其大小足以看起来像Versicolor虹膜。
通过在图上方绘制的图例,所有这些解释都是可能的。
创建3D散点图
有时,我们可能对创建包含3个变量而不是2个变量的散点图感兴趣。
尽管R的基本图形仅支持2D散点图,但是还有另一个名为scatterplot3d的软件包可以实现此目的。
我们将从安装此软件包开始。
install.packages("scatterplot3d") package ‘scatterplot3d’ successfully unpacked and MD5 sums checked The downloaded binary packages are in C:\Users\theitroad\AppData\Local\Temp\Rtmpc7b8JR\downloaded_packages
现在,请确保将已安装的程序包加载到您的环境中。
library("scatterplot3d")
因此,让我们为虹膜数据集中的三个变量创建3D散点图。
> scatterplot3d(iris$Petal.Length,iris$Petal.Width,iris$Sepal.Length)
现在,让我们尝试为上述每个类绘制不同的颜色。
但是,在这种情况下,unclass函数将不起作用。
我们需要使用as.factor()函数将物种变量转换为因子。
让我们还将x-label,y-label,z-label和标题添加到上述图形中。
> spec <- as.factor(iris$Species) > scatterplot3d(iris$Petal.Length,iris$Petal.Width,iris$Sepal.Length, pch=20, xlab='Petal Length',ylab='Petal Width',zlab='Sepal Length',main="3D plot", color=c('red','green','blue')[spec])
散点图是数据分析中简单但重要的工具。
它们最适合用于识别异常值并获得对数据特征的一般观察。