R语言中使用ggplot2绘制直线图的教程及实例

830 阅读4分钟

简介

在这篇文章中,我们将通过使用ggplot2包在R中绘制线图的教程。ggplot2是一个常用的开源R包,用于创建漂亮的可视化。我们将首先解释geom_line()几何对象的语法,该对象用于在ggplot2中生成线状图。然后,我们将介绍用这个库创建线图的各种例子。

ggplot2中线型图的语法

在ggplot2中生成线段图的最小语法是

ggplot(, mapping = aes() + geom_line()

然而,为了更好的可视化和美观,更常见的做法是将散点图的点与线图一起添加,如下所示

ggplot(, mapping = aes() + geom_line() + geom_point()

ggplot2可以让你在图中添加更多的层,如主题、实验室等,以创建更高级的散点图。

在R中使用ggplot2绘制直线图的例子

加载ggplot2库

我们首先加载ggplot2库,如下所示。

In[0]:

library(ggplot2)

加载数据集

我们将使用汽车数据集来绘制所有的线图实例。数据集被加载到数据框中,其样本行被显示出来。

In[1]:

df <- read.table("Cars.csv",header=TRUE,sep=',') 
options( warn = -1 )
head(df)

Out[1]:

名称年份销售价格行驶公里数燃料卖家类型传动装置车主
Maruti 800 AC20076000070000汽油个人手动第一任车主
Maruti Wagon R LXI Minor200713500050000汽油个人手动第一任车主
现代Verna 1.6 SX2012600000100000柴油机个人手动第一任车主
达特桑RediGO T选项201725000046000汽油个人手动第一任车主
本田Amaze VX i-DTEC2014450000141000柴油机个人手动第二位车主
Maruti Alto LX BSIII2007140000125000汽油个人手动第一车主

例1:ggplot2的基本线图

让我们用geom_line()为 "年份 "与 "售价 "的数据集的前10条记录绘制基本的ggplot2线图。

In[2]:

# Basic line plot with points

ggplot(data=head(df, n=20), aes(x=year, y=selling_price)) +
  geom_line()+
  geom_point()

Out[2]:

Example of Line plot in ggplot2

例2:改变线型

线形图的类型可以通过传递linetype参数来改变,该参数有几个选项,如虚线、两条破折线、虚线等等。

在下面两个例子中,我们在lineetype参数中使用了'dashes'和'twodashes'。

In[3]:

# Change the line type
ggplot(data=head(df, n=10), aes(x=year, y=selling_price)) +
  geom_line(linetype = "dashed")+
  geom_point()

Out[3]:

Example of Line plot in ggplot2

在[4]中:

ggplot(data=head(df, n=200), aes(x=year, y=selling_price)) +
  geom_line(linetype = "twodash")+
  geom_point()

Out[4]:

Example of Line plot in ggplot2

例三:改变线条的颜色

让我们使用geom_line( )的颜色参数来改变线条的颜色。在下面的例子中,我们使用了红色。

在[5]中:

# Change the color
ggplot(data=head(df, n=10), aes(x=year, y=selling_price, group=1)) +
  geom_line(color="red")+
  geom_point()

Out[5]:

Example of Line plot in ggplot2

例四:在ggplot2中改变线图的大小

线条的大小可以用命令size来定制,并在geom_line( )中传递size的值。

In[6]:

# Format the line size
ggplot(data=head(df, n=10), aes(x=Country, y=Urban.Pop, group=1)) +
  geom_line(color="green",size=1.5)+
  geom_point()

输出[6]:

例5:为线段图添加标题

ggtitle()可以用来添加绘图标题,labs()可以用来添加坐标轴标题。

在[7]中:

line<-ggplot(data=head(df, n=10), aes(x=Country, y=Urban.Pop, group=1)) +
  geom_line(color="blue",size=1.1)+
  geom_point() + 
  ggtitle("Kilometres vs Car Price")+
  labs(x="KM",y="Price")

Out[7]:

例6:给线段图添加箭头

为了给我们的线图添加一个箭头,我们使用箭头参数并将箭头()传递给它。

我们也可以在一个类似箭头的角度中改变参数,类型结束在箭头对象中,如下面第二个例子所示。

In[8]:

# Adding an arrow
ggplot(data=head(df, n=10), aes(x=Country, y=Land.Area, group=1)) +
  geom_line(arrow=arrow(),size=1.1,color='red')+
  geom_point()

Out[8]:

在[9]中:

# Adding  closed arrow on both ends of the line
arr=arrow(angle = 20, ends = "both", type = "closed")
ggplot(data=head(df, n=10), aes(x=Country, y=Land.Area, group=1)) +
  geom_line(arrow=arr,size=1.1,color='red')+
  geom_point()

Out[9]:

例七:多线图

要在一个图形中绘制多个线段图,我们不需要做太多的改动,只需要将组属性设置为基于不同线段的列的名称就可以了

In[10]:

# Color selection
cols <- c("#D43F3A", "#EEA236")

ggplot(df, aes(x =year, y =selling_price , color =transmission)) +
  geom_line(size=3) +
  scale_color_manual(values = cols) + theme_dark()

Out[10]:

例8:图例定制

我们可以使用 guide_legend() 函数来改变线段图例的标题,如下所示。

在[11]中:

ggplot(df, aes(x =year,y=selling_price , color =transmission)) +
  geom_line(size=2.5) +
  guides(color = guide_legend(title = "The Title"))

Out[11]:

这里我们改变图例标签。

In [12]:

ggplot(df, aes(x =year,y=selling_price , color =transmission)) +
  geom_line(size=2.5) +
  scale_color_discrete(labels = paste("Transmission Type", 1:2))

Out[12]:

例九:基于条件创建折线图

我们可以根据行驶里程小于10万公里的汽车的销售价格这一条件来创建数据集的折线图。

在[13]中:

ss <- subset(head(df,n=30), km_driven<100000)
ggplot(data = ss, aes(x=km_driven, y=selling_price)) + geom_line(size=2.5, color='red')

Out[13]:

例10:在折线图中添加数据标签

现在让我们添加一些数据标签,这里我们用标签来获取y轴上的数值,用nudge_y来放置数据标签。

In[14]:

ggplot(data=head(df,n=8), aes(x=year, y=selling_price, group=1,label=selling_price)) +
  geom_line(color='blue',size=2.5)+
  geom_point()+
  geom_text(nudge_y = 3, size=6)

Out[14]:

参考 -ggplot2文档