(八)高級繪圖——初窺ggplot2

ggplot2包的目的是提供一個全面的晒骇、基于語法的亩进、連貫一致的圖形生成系統(tǒng)衙傀,允許用戶創(chuàng)建新穎的、有創(chuàng)新性的數(shù)據(jù)可視化圖形渐行。

1、簡介ggplot2語法

下面將從一個例子來看看ggplot2的基本語法铸董。

library(ggplot2)    # 載入ggplot2包   
ggplot(data=mtcars, aes(x=wt,y=mpg)) +    # 指定繪圖的數(shù)據(jù)   (1)
  geom_point(pch=17,color='red',size=2) +   # 繪圖函數(shù)及其參數(shù)  (2)
  geom_smooth(method='lm',color='green',linetype=2) +   # 繪圖函數(shù)(擬合曲線)(3)
  labs(title='ggplot2', x='Weight', y='MPG') +    # 添加注釋信息(標(biāo)題)(4)
  theme(plot.title = element_text(hjust = 0.5))    # 調(diào)整標(biāo)題位置   (5)

現(xiàn)在我們來一步步解析上面的代碼:
(1)初始化圖形并指定要用到的數(shù)據(jù)來源(mtcars)和變量(wt祟印、mpg)。aes()函數(shù)指定每個變量扮演的角色粟害,這里的wt映射到x軸數(shù)值蕴忆,mpg映射到y(tǒng)軸數(shù)值。當(dāng)需要對數(shù)據(jù)進行分類時我磁,還可將分類因子映射到圖形性狀或顏色上面孽文;
(2)繪圖函數(shù)(也稱幾何函數(shù))使用一個或幾個函數(shù)向圖中添加幾何對象(簡寫為geom),包括點夺艰、線芋哭、條、箱線圖和陰影區(qū)域郁副,這里向圖中添加了散點圖以及一條擬合曲線(代碼3)减牺。當(dāng)需要在一個圖中使用多個數(shù)據(jù)來源進行畫圖時,可以單獨在每個幾何函數(shù)中指定數(shù)據(jù)源存谎;
(4)labs()函數(shù)是可選的拔疚,用來添加注釋(包括軸標(biāo)簽和標(biāo)題信息);
(5)theme()函數(shù)用來設(shè)置全局配置既荚,這里設(shè)置了標(biāo)題的位置為中間稚失;


除了上面的一些基本設(shè)置外,ggplot2還提供了分組和小面化(faceting)以及圖形組合的方法恰聘,這些較為高級的方法將在下面進行介紹句各。

2吸占、幾何函數(shù)

ggplot()函數(shù)可用來指定要繪制的數(shù)據(jù)源和變量,也可不在ggplot()中設(shè)置而在每個幾何函數(shù)中單獨設(shè)置所用的數(shù)據(jù)源及變量凿宾,幾何函數(shù)則指定了這些變量如何在視覺上進行展示(點矾屯、線、條初厚、箱線圖等)件蚕。使用命令ls(pattern = '^geom_', env = as.environment('package:ggplot2'))可以查看所有可用的幾何函數(shù),常用的幾何函數(shù)如下表:

函數(shù) 圖形 常用選項
geom_bar() 條形圖 color产禾、fill排作、alpha
geom_boxplot() 箱線圖 color、fill亚情、alpha纽绍、notch、width
geom_density() 密度圖 color势似、fill拌夏、alpha、linetype
geom_hist0gram() 直方圖 color履因、fill障簿、alpha、linetype栅迄、binwidth
geom_hline() 水平線 color站故、alpha、linetype毅舆、size
geom_jitter() 抖動圖 color西篓、size、alpha憋活、shape
geom_line() 線圖 colorvalpha岂津、linetype、size
geom_point() 散點圖 color悦即、alpha吮成、shape、size
geom_rug() 地毯圖(軸須圖) color辜梳、size
geom_smooth() 擬合曲線 method粱甫、formula、color作瞄、fill茶宵、linetype、size
geom_text() 文字注解 很多宗挥,參加函數(shù)幫助
geom_violin() 小提琴圖 color乌庶、fill叶摄、alpha、linetype
geom_vline() 垂線 color安拟、alpha、linetype宵喂、size

對于幾何函數(shù)中每個選項的意義糠赦,詳見下表:

選項 詳述
color 對點、線和填充區(qū)域的邊界進行著色
fill 對填充區(qū)域著色锅棕,如條形和密度區(qū)域
alpha 顏色的透明度拙泽,從0(完全透明)到1(不透明)
linetype 線條類型,1=實線裸燎,2=虛線顾瞻,3=點,4=破折號德绿,5=長破折號荷荤,6=雙破折號
size 點的尺寸和線的寬度
shape 點的性狀(和pch一樣,0=方形移稳,1=圓形蕴纳,2=三角形,等等)
position 繪制諸如條形圖和點等對象的位置个粱。對于條形圖來說古毛,‘dodge’將分組條形圖并排,‘stacked’則為堆疊條形圖都许,‘fill’標(biāo)準(zhǔn)化堆疊條形圖稻薇。對于點來說,‘jitter’抖動減少點重疊
binwidth 直方圖的寬度
notch 表示方塊圖是否為缺口(TRUE胶征、FALSE)塞椎,常見于箱線圖
sides 地毯圖的安置('b'=底部,'l'=左部睛低,'t'=頂部忱屑,'r'=右部,'bl'=左下部暇昂,等等)
width 箱線圖的寬度
library(ggplot2)
mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c('Automatic', 'Manual'))
ggplot() +
  geom_point(data=mtcars, aes(x=wt,y=mpg,shape=am, color=am),size=2) +  # 性狀和顏色都使用am進行分組
  geom_smooth(data=mtcars, aes(x=wt,y=mpg),method='lm',color='green',linetype=2) +
  labs(title='ggplot2', x='Weight', y='MPG') +
  theme(plot.title = element_text(hjust = 0.5))

下圖是對例子的一個改進莺戒,在上面的代碼中可以看到,我們將數(shù)據(jù)分別放在了各個幾何函數(shù)中急波,之所以這么做是為了對所有的數(shù)據(jù)進行擬合曲線从铲,若將數(shù)據(jù)源一起放在ggplot()中進行設(shè)置的話,后面進行數(shù)據(jù)擬合的話會分別對am的分組數(shù)據(jù)進行擬合澄暮。


下面再看一個箱線圖的簡單例子名段。

> library(ggplot2)
> mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c('Automatic', 'Manual'))
> mtcars$cyl <- factor(mtcars$cyl, levels=c(4,6,8), labels=c('cyl-4', 'cyl-6','cyl-8'))
> ggplot(data=mtcars, aes(x=cyl, y=mpg, fill=am)) +  # 使用am填充分組
+     geom_boxplot() +
+     labs(title='ggplot2', x='cyl', y='MPG') +
+     theme(plot.title = element_text(hjust = 0.5))

在這里我們使用箱線圖展示了cyl和mpg的關(guān)系阱扬,并使用am進行了二次分組,分組方式為填充顏色表示(fill=am)伸辟。


最后我們再來看一個使用了多個幾何函數(shù)的圖形麻惶,該圖形使用的是Salaries數(shù)據(jù)集。

> data(Salaries,package='car')
> ggplot(Salaries, aes(x=rank, y=salary)) +
+     geom_boxplot(fill='cornflowerblue', color='black',notch=TRUE) +  # 添加箱線圖
+     geom_point(position='jitter',color='blue',alpha=0.5) +   # 添加打散(jitter)了的散點圖
+     geom_rug(sides='l',color='green')  # 在左側(cè)添加軸須圖
+     labs(title='ggplot2')  # 添加標(biāo)題信夫,默認(rèn)添加在左上方

3窃蹋、分組

通常為了更好地理解數(shù)據(jù),在一個圖中畫出兩個或更多組的觀察值通常都是很有幫助的静稻。ggplot2中的分組是通過一個或多個帶有諸如性狀警没、顏色、填充振湾、尺寸和線條類型的視覺特征的分組變量來完成的杀迹。ggplot2中的aes()函數(shù)負責(zé)分配變量(圖形的視覺特征),所以這是一個分配分組變量的自然地方押搪。
這里我們將繼續(xù)使用Salaries數(shù)據(jù)集树酪,首先來查看下薪水是如何隨學(xué)術(shù)等級而變化的。代碼:

> ggplot(data=Salaries, aes(x=salary, fill=rank)) +  # 根據(jù)學(xué)術(shù)等級rank進行分類
+     geom_density(alpha=0.3)   # 添加密度圖

從圖中可以看到不同學(xué)術(shù)等級的薪水雖然有重疊大州,但仍能看到隨著學(xué)術(shù)水平的增加薪水提高了嗅回。接下來,我們通過性別和學(xué)術(shù)等級分組摧茴,繪制獲得博士學(xué)位年數(shù)與薪水的關(guān)系绵载,代碼:

> ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank, shape=sex)) +  
                      # 這里使用了兩個分組變量sex和rank,在圖中分別通過不同的顏色和不同的形狀表示
+     geom_point()


最后苛白,選項可以通過不同的方式使用娃豹,這取決于他們發(fā)生在aes()函數(shù)內(nèi)部還是外部。讓我們比較下面的一段代碼繪制的圖形:

> p1<-ggplot(Salaries, aes(x=rank, fill=sex)) + geom_bar()
> p2<-ggplot(Salaries, aes(x=rank)) + geom_bar()
> p3<-ggplot(Salaries, aes(x=rank,fill='red')) + geom_bar()
> p4<-ggplot(Salaries, aes(x=rank)) + geom_bar(fill='red')
> library(gridExtra)
> grid.arrange(p1,p2,p3,p4,ncol=4)  # 組合圖形

在第一個圖(p1)中购裙,sex變量通過條形圖中的填充顏色來展示懂版。在第二個圖(p2)中,沒有設(shè)置分組變量也沒有設(shè)置填充顏色躏率,只繪制了各個rank的數(shù)量躯畴。第三個圖(p3)中,ggplot2假定‘red’是變量名薇芝,結(jié)果得到的結(jié)果與圖2基本相同蓬抄。第四個圖(p4),使用紅色來填充圖形夯到。

4嚷缭、刻面

如果組在圖中并排出現(xiàn)而不是重疊為單一的圖形,關(guān)系就是清晰的。我們可以使用facet_wrap()facet_grid()函數(shù)創(chuàng)建網(wǎng)格圖形(也稱刻面圖)阅爽。這些函數(shù)的使用方法如下路幸,其中var,rowvar付翁,colvar是因子

語法 結(jié)果
facet_wrap(~var, ncol=n) 將每個var水平排列成n列的獨立圖
facet_wrap(~var, nrow=n) 將每個var水平排列成n行的獨立圖
facet_grid(rowvar~colvar) rowvar和colvar組合的獨立圖简肴,其中rowvar表示行,colvar表示列
facet_grid(rowvar~.) 每個rowvar水平的獨立圖百侧,配置成一個單列
facet_grid(.~colvar) 每個colvar水平的獨立圖砰识,配置成一個單行

接下來我們使用mtcars數(shù)據(jù),以am和cyl作為分組變量對mpg進行分組繪制直方圖移层。

library(ggplot2)
mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c('Automatic', 'Manual'))
mtcars$cyl <- factor(mtcars$cyl, levels=c(4,6,8), labels=c('cyl-4', 'cyl-6','cyl-8'))

ggplot(data=mtcars, aes(x=mpg)) + 
  geom_histogram(fill='green') +
  facet_wrap(~cyl, nrow=1) # 使用cyl作為分組變量將mpg分組繪制
library(ggplot2)
mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c('Automatic', 'Manual'))
mtcars$cyl <- factor(mtcars$cyl, levels=c(4,6,8), labels=c('cyl-4', 'cyl-6','cyl-8'))

ggplot(data=mtcars, aes(x=mpg)) + 
  geom_histogram(fill='green') +
  facet_grid(am~cyl)   # 同時使用am和cyl作為分組變量,交叉分組

5赫粥、擬合曲線

選項 描述
method 使用的平滑函數(shù)观话。可選的值包括lm, glm, smooth越平,rlm和gam频蛔,分別對應(yīng)線性,廣義線性秦叛,loess晦溪,健壯線性和廣義相加模型。默認(rèn)為smooth
formula 在光滑曲線中使用的公式挣跋,例如y~x 三圆,y~log(x) ,y~poly(x, n)
se 繪制置信區(qū)間避咆。默認(rèn)為TRUE
level 使用的置信區(qū)間水平(默認(rèn)為95%)
fullrange 指定擬合應(yīng)涵蓋全圖(TRUE)或僅僅是數(shù)據(jù)(FALSE)舟肉,默認(rèn)為FALSE

本部分我們將分析一下添加平滑曲線(線性,非線性和非參數(shù))到散點圖中的方法查库。我們可以使用geom_smooth()函數(shù)來添加一系列平滑曲線和置信區(qū)域路媚。函數(shù)的參數(shù)見下表:

選項 描述
method 使用的平滑函數(shù)》可選的值包括lm, glm, smooth整慎,rlm和gam,分別對應(yīng)線性围苫,廣義線性裤园,loess,健壯線性和廣義相加模型剂府。默認(rèn)為smooth
formula 在光滑曲線中使用的公式比然,例如y~x ,y~log(x) 周循,y~poly(x, n)
se 繪制置信區(qū)間强法。默認(rèn)為TRUE
level 使用的置信區(qū)間水平(默認(rèn)為95%)
fullrange 指定擬合應(yīng)涵蓋全圖(TRUE)或僅僅是數(shù)據(jù)(FALSE)万俗,默認(rèn)為FALSE

這里使用Salaries數(shù)據(jù)集,我們先檢驗博士畢業(yè)年數(shù)和薪水之間的關(guān)系饮怯。在這個例子中闰歪,我們使用帶有95%置信區(qū)間的非參數(shù)光滑曲線(loess)。暫時忽略學(xué)術(shù)等級和性別蓖墅,代碼:

> data(Salaries, package='car')
> library(ggplot2)
> ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary)) +
+     geom_point() + 
+     geom_smooth(color='red')

圖形顯示库倘,隨著博士畢業(yè)年數(shù)的增加,薪水先增加后來又會降低论矾。
接下來教翩,我們按性別擬合一個二次多項式回歸(一個彎曲):

> ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, linetype=sex, color=sex, shape=sex)) + 
+     geom_smooth(method=lm, formula=y~poly(x,2),se=FALSE,size=1) +
+     geom_point(size=2)

正如前面第一部分我們說的那樣,當(dāng)使用全局的數(shù)據(jù)源(在ggplot中設(shè)置)時贪壳,我們會擬合出分類數(shù)條曲線饱亿。這里我們分別對女性和男性的薪水隨博士畢業(yè)年限的變化擬合了兩條曲線。

6闰靴、修改ggplot2圖形的外觀

在R基本繪圖中彪笼,我們可以使用par()函數(shù)定義全局參數(shù)。在ggplot2中提供了特定的函數(shù)來改變圖形外觀蚂且。

6.1 坐標(biāo)軸

ggplot2在創(chuàng)建圖形時會自動創(chuàng)建刻度線配猫、刻度標(biāo)記和坐標(biāo)軸標(biāo)簽,有時我們可能想自定義這些圖形杏死。前面我們已經(jīng)看到了labs()函數(shù)可以用來添加標(biāo)題和軸標(biāo)題泵肄,本節(jié)中我們將自定義軸標(biāo)簽,自定義軸標(biāo)簽的函數(shù)如下:

函數(shù) 選項
scale_x_continous()淑翼、scale_y_continous breaks=指定刻度標(biāo)記凡伊,labels=指定刻度標(biāo)記標(biāo)簽,limits=控制要展示的值得范圍
scale_x_discret()和scale_y_discret() breaks=對因子的水平進行放置和排序窒舟,labels=指定這些水平的標(biāo)簽系忙,limits=表示那些水平應(yīng)該展示
coord_flip() 顛倒X軸和Y軸

可以看到,ggplot2的函數(shù)區(qū)分x軸和y軸惠豺,以及軸線是否代表一個連續(xù)或離散變量(因子)银还。
下面我們將這些函數(shù)應(yīng)用到一個分組箱線圖中,其中包含按學(xué)術(shù)等級和性別分組的薪資水平洁墙,代碼:

> ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex)) +
+        geom_boxplot() +
+         scale_x_discrete(breaks=c('AsstProf', 'AssocProf', 'Prof'), 
                           labels=c('Assistant\nProfessor', 'Associate\nProfessor', 'Full\nProfessor')) + 
+         scale_y_continuous(breaks=c(50000, 100000, 150000, 200000), 
                             labels=c('$50K','$100K','$150K','$200K')) +
+         labs(title='Faculty Salary by Rank and Sex', x='rank',y='salary')

可以很明顯的看到蛹疯,平均收入隨著學(xué)術(shù)排名的上升而上升,在每個學(xué)術(shù)等級中男性的薪資水平高于女性热监。

6.2 圖例

圖例是指如何用顏色捺弦、形狀尺寸等視覺特性表示數(shù)據(jù)特征的指南。ggplot2包能自動生成圖例,而且很多時候能滿足我們的需求列吼;但在某些時候幽崩,我們可能需要對其進行自定義。標(biāo)題和位置是最常用的定制特征寞钥。
當(dāng)更改圖例的標(biāo)題時慌申,必須考慮圖例是否基于顏色、尺寸理郑、形狀或他們的組合蹄溉。在6.1節(jié)中,圖例代表fill您炉,因此我們可以通過將fill='mytitle'加到labs()函數(shù)中來改變標(biāo)題柒爵。標(biāo)題的位置由theme()函數(shù)中的legend.position選項控制∽簦可能的值包括'left'棉胀、'right'(默認(rèn))、'top'和'bottom'囱晴。我們也可以在圖中給定位置指定一個二元向量膏蚓。下面我們對6.1節(jié)中的圖進行更改瓢谢,增加一個分類因子color=discipline畸写,并改變圖例的標(biāo)題和位置。

> ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex, color=discipline)) +
+        geom_boxplot() +
+         scale_x_discrete(breaks=c('AsstProf', 'AssocProf', 'Prof'), 
                           labels=c('Assistant\nProfessor', 'Associate\nProfessor', 'Full\nProfessor')) + 
+         scale_y_continuous(breaks=c(50000, 100000, 150000, 200000),   
                             labels=c('$50K','$100K','$150K','$200K')) +
+         labs(title='Faculty Salary by Rank and Sex', x='rank',y='salary',color='Discip', fill='Gender') +
          ### labs()中的color='Discip'和fill='Gender'分別表示color和fill兩個分類的圖例的名稱
+         theme(legend.position=c(0.1,0.8))    # 設(shè)置圖例位置

本例中c(0.1,0.8)分別表示距離左側(cè)邊緣10%和底部邊緣80%的部分氓扛。如果想刪除圖例則可以使用legend.position='none'枯芬。

6.3 標(biāo)尺

ggplot2包使用標(biāo)尺把數(shù)據(jù)映射到可視化的空間中。標(biāo)尺既可以應(yīng)用到連續(xù)的變量采郎,也可以應(yīng)用到離散的變量千所。下面我們使用mtcars數(shù)據(jù)集,將disp變量映射到圖形中點的大小蒜埋,代碼:

> ggplot(mtcars, aes(x=wt, y=mpg, size=gear)) +   # gear映射到散點的大小
+          geom_point(shape=21, color='black', fill='cornsilk') +
+          labs(x='Weight', y='Miles Per Gallon', title='Bubble Chart', size='Gear')

下面代碼我們繼續(xù)使用mtcars數(shù)據(jù)集淫痰,將cyl映射到圖形顏色上(將顏色作為不同等級的標(biāo)尺),并通過scale_color_manual()函數(shù)來手動設(shè)定三個cyl的點的顏色整份。

> mtcars$cyl <- factor(mtcars$cyl, levels=c(4,6,8), labels=c('cyl-4', 'cyl-6','cyl-8'))
> ggplot(mtcars, aes(x=wt, y=mpg, color=cyl)) +
+          geom_point(shape=21) +
+          labs(x='Weight', y='Miles Per Gallon') +
+         scale_color_manual(values=c('red','blue','green'))

此外待错,如果不想自己設(shè)置每一種顏色,可通過scale_color_brewer()scale_fill_brewer()函數(shù)來指定顏色集烈评。

6.4 主題

theme()函數(shù)中的選項可以讓我們調(diào)整字體火俄、北京、顏色和網(wǎng)格線等讲冠。主題可以使用一次瓜客,也可以保存起來應(yīng)用到多個圖中。

library(ggplot2)
data(Salaries, package='car')

mytheme<-theme(plot.title=element_text(face='bold.italic',size=14,color='brown',hjust=0.5),  # 指定圖標(biāo)題的字體以及位置
          axis.title=element_text(face='bold.italic',size=10,color='brown'),  # 設(shè)置軸標(biāo)題的字體大小等
          axis.text=element_text(face='bold.italic',size=9,color='darkblue'),  # 軸標(biāo)簽字體設(shè)置
          panel.background=element_rect(fill='white',color='darkblue'),  # 背景設(shè)置
          panel.grid.major.y=elemnt_line(color='grey',linetype=1),  # 設(shè)置網(wǎng)格線
          panel.grid.minor.y=element_line(color='grey', linetype=2), # 設(shè)置網(wǎng)格線
          panel.grid.minor.x=element_blank())  # 垂直網(wǎng)格不輸出

ggplot(Salaries, aes(x=rank,y=salary,fill=sex)) + 
  geom_boxplot() +
  labs(title='Salary by Rank and Sex',x='RANK',y='Salary') +
  mytheme

7、組合圖

在基礎(chǔ)繪圖中谱仪,我們使用par()函數(shù)的mfrow和mfcol參數(shù)和layout()來將多個圖形組合起來玻熙。將多個ggplot圖形組在一起最簡單的方式是使用gridExtra包中的grid.arrange()函數(shù),使用前需先安裝這個包芽卿。
下面我們將三個ggplot圖形合并到一個圖中揭芍,代碼:

> p1<-ggplot(data=Salaries, aes=(x=rank)) + geom_bar()
> p1<-ggplot(data=Salaries, aes(x=rank)) + geom_bar()
> p2<-ggplot(data=Salaries, aes(x=sex)) + geom_bar()
> p3<-ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary)) + geom_point()
> library(gridExtra)
> grid.arrange(p1, p2, p3)
> grid.arrange(p1, p2, p3, ncol=3)

8、保存圖形

保存圖形能使用基礎(chǔ)繪圖的方法卸例,但ggsave()函數(shù)能更為方便地保存它称杨。它的選項包括保存那幅圖形,保存位置以及保存形式筷转。

myplot<-ggplot(data=mtcars, aes(x=mpg)) + geom_histogram()
ggsave(file='filename.tiff', plot=myplot, width=5, height=4)

我們可以通過將文件名的擴展格式設(shè)置為不同的格式來以不同的方式保存姑原。如果忽略plot=選項,最近創(chuàng)建的圖形會被保存呜舒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锭汛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子袭蝗,更是在濱河造成了極大的恐慌唤殴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件到腥,死亡現(xiàn)場離奇詭異朵逝,居然都是意外死亡,警方通過查閱死者的電腦和手機乡范,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門配名,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晋辆,你說我怎么就攤上這事渠脉。” “怎么了瓶佳?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵芋膘,是天一觀的道長。 經(jīng)常有香客問我霸饲,道長为朋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任贴彼,我火速辦了婚禮潜腻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘器仗。我一直安慰自己融涣,他們只是感情好童番,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著威鹿,像睡著了一般剃斧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忽你,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天幼东,我揣著相機與錄音,去河邊找鬼科雳。 笑死根蟹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糟秘。 我是一名探鬼主播简逮,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尿赚!你這毒婦竟也來了散庶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凌净,失蹤者是張志新(化名)和其女友劉穎悲龟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冰寻,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡须教,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了性雄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没卸。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡羹奉,死狀恐怖秒旋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诀拭,我是刑警寧澤迁筛,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站耕挨,受9級特大地震影響细卧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筒占,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一贪庙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翰苫,春花似錦止邮、人聲如沸这橙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屈扎。三九已至,卻和暖如春撩匕,著一層夾襖步出監(jiān)牢的瞬間鹰晨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工止毕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留模蜡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓扁凛,卻偏偏與公主長得像哩牍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子令漂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容