R語(yǔ)言編程-Tidyverse 書籍 - 第三章 - ggplot2 包

R最強(qiáng)項(xiàng)就是可視化,而ggplot2是其中最為著名的包

3.1 ggplot2基本語(yǔ)法

ggplot2 基于圖層化語(yǔ)法:圖形是一層一層的圖層疊加而成平痰。
選取整潔數(shù)據(jù)將其映射為幾何對(duì)象(如點(diǎn)伍纫、線等) 翻斟,幾何對(duì)象具有美學(xué)特征(如坐標(biāo)軸说铃、顏色等) ,若需要?jiǎng)t對(duì)數(shù)據(jù)做統(tǒng)計(jì)變換腻扇,調(diào)整標(biāo)度幼苛,將結(jié)果投影到坐標(biāo)系,再根據(jù)喜好選擇主題墙杯。

繪圖流程

image.png

包括10個(gè)部件, 前3個(gè)是必須得高镐, 其他ggplot2會(huì)自動(dòng)幫你設(shè)置畸冲。

  • 數(shù)據(jù) data
  • 映射 mapping
  • 幾何對(duì)象 geom
  • 標(biāo)度 scale
  • 統(tǒng)計(jì)變換 stats
  • 坐標(biāo)系 coord
  • 位置調(diào)整 position adjustments
  • 分面 facet
  • 主題 theme
  • 輸出 output

基本模板

ggplot(data = ,
           mapping = aes()) +
        geom_function(mappong = aes(),
           stat = ,
           position = )+ 
      <SCALE_FUNCTION> +
      <COORDINATE_FUNCTION> +
      <FACET_FUNCTION> +
      <THEME_FUNCTION>

數(shù)據(jù)、映射算行、幾何對(duì)象

  • 數(shù)據(jù):用于繪圖的數(shù)據(jù)州邢,需要是整潔的數(shù)據(jù)框
  • 映射: 函數(shù)aes() 是ggplot2 中的映射函數(shù), 指明了變量與圖形所見(jiàn)元素之間的聯(lián)系,告訴ggplot 圖形元素想要關(guān)聯(lián)哪個(gè)變量數(shù)據(jù).


    image.png

ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv))
經(jīng)常將圖形的美學(xué)color, size 等映射到數(shù)據(jù)集的分類變量,以實(shí)現(xiàn)不同分組用不同的美學(xué)來(lái)區(qū)分. 类少。所以硫狞,若要為美學(xué)指定特定值,比如color = "red", 是不能放在映射
aes() 中的财忽。

  • 幾何對(duì)象: 每個(gè)圖形都是采用不同的視覺(jué)對(duì)象來(lái)表達(dá)數(shù)據(jù)
    通常用不同類型的‘‘幾何對(duì)象’’ 從不同角度來(lái)表達(dá)數(shù)據(jù)泣侮,如散點(diǎn)圖活尊、平滑曲線、線形圖深胳、條形圖铜犬、箱線圖等癣猾。
    ggplot2 提供了50 余種‘‘幾何對(duì)象’’,均以geom_xxxx() 的方式命名夸盟,常用的有:


    image.png

    image.png

ggplot() 中的數(shù)據(jù)和映射满俗,是全局的,可供所有幾何對(duì)象共用五芝;位于’’ 幾何對(duì)象’’ 中的數(shù)據(jù)和映射枢步,是局部的渐尿,只供該幾何對(duì)象使用砖茸;

‘‘幾何對(duì)象’’ 優(yōu)先使用局部的,局部沒(méi)有則用全局的货葬。

分組使用group

  • 標(biāo)度scale_
    標(biāo)度函數(shù)控制幾何對(duì)象中的標(biāo)度映射:不只是x, y 軸震桶,還有color, fill, shape, size 產(chǎn)生的圖例征绎。
  • 常用的標(biāo)度函數(shù)


    image.png

scales 包提供了很多現(xiàn)成的設(shè)置刻度標(biāo)簽風(fēng)格的函數(shù)

1. 修改坐標(biāo)軸刻度及標(biāo)簽

1.1 用scale_*_continuous() 修改連續(xù)變量坐標(biāo)軸的刻度和標(biāo)簽:

  • 參數(shù)breaks 設(shè)置各個(gè)刻度的位置
  • 參數(shù)labels 設(shè)置各個(gè)刻度對(duì)應(yīng)的標(biāo)簽

用scale_*_discrete() 修改離散變量坐標(biāo)軸的標(biāo)簽:
1.2 scale_x_discrete(labels = c("4" = " 四驅(qū)", "f" = " 前驅(qū)", "r" = " 后驅(qū)"))

1.3 用scale_x_date() 設(shè)置日期刻度柴墩,參數(shù)date_breaks 設(shè)置刻度間隔顷扩,date_labels 設(shè)置標(biāo)簽的日期格式隘截;
1.4 借助scales 包中的函數(shù)設(shè)置特殊格式汹胃,比如百分?jǐn)?shù)(percent)着饥、科學(xué)計(jì)數(shù)法(scientific)、美元格式(dollar) 等呵哨。

2. 修改坐標(biāo)軸標(biāo)簽孟害、圖例名及圖例位置

函數(shù)xlab(), ylab(), 設(shè)置x 軸、y 軸標(biāo)簽
前面已使用color 美學(xué)击你,則可以在labs() 函數(shù)中使用參數(shù)color 修改顏色的圖例名.

圖例位置是在theme 圖層通過(guò)參數(shù)legend. position 設(shè)置丁侄,可選取值有“none,” “l(fā)eft,” “right,” “bottom,” “top.”

3. 設(shè)置坐標(biāo)軸范圍

xlim(), ylim() 函數(shù)朝巫,設(shè)置x 軸和y 軸的范圍

4.變換坐標(biāo)軸

ggplot2 提供的坐標(biāo)變換函數(shù)scale_x_log10() 等是變換坐標(biāo)系劈猿,能夠在視覺(jué)效果相同的情況下,使用原始數(shù)據(jù)的坐標(biāo)刻度

5.設(shè)置圖形標(biāo)題

用labs() 函數(shù)的參數(shù)title, subtitle, caption 設(shè)置標(biāo)題庐镐、副標(biāo)題必逆、腳注標(biāo)題(默認(rèn)右下角)

如果想改成頂部居中揽乱,需要加theme 圖層專門設(shè)置


image.png

6. 設(shè)置fill, color 顏色

數(shù)據(jù)的某個(gè)維度信息可以通過(guò)顏色來(lái)展示凰棉,顏色直接影響圖形的美感撒犀。
可以直接使用顏色值,但是更建議使用RColorBrewer(調(diào)色板)或colorspace 包荆姆。
6.1 離散變量


image.png

6.2 連續(xù)變量


image.png

image.png

7. 添加文字標(biāo)注-ggrepel 包

ggrepel 包提供了geom_label_repel() 和geom_text_repel() 函數(shù),為圖形添加文字標(biāo)注仆救。
首先要準(zhǔn)備好標(biāo)記點(diǎn)的數(shù)據(jù),然后增加文字標(biāo)注的圖層构诚,需要提供標(biāo)記點(diǎn)數(shù)據(jù)范嘱,以及要標(biāo)注的文字給label 美學(xué)员魏,若來(lái)自數(shù)據(jù)變量撕阎,則需要用映射

library(ggrepel)
best_in_class = mpg %>% # 選取每種車型hwy 值最大的樣本
   group_by(class) %>%
   slice_max(hwy, n = 1)
ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(color = class)) +
  geom_label_repel(data = best_in_class, aes(label = model))
image.png

若要在圖形某坐標(biāo)位置添加文本注釋虏束,則用annotate() 函數(shù),需要提供添加文本的中心坐標(biāo)位

4 統(tǒng)計(jì)變換照藻、坐標(biāo)系幸缕、位置調(diào)整

  • 統(tǒng)計(jì)變換(Statistics):構(gòu)建新的統(tǒng)計(jì)量進(jìn)而繪圖晰韵,稱為‘‘統(tǒng)計(jì)變換’’雪猪,簡(jiǎn)稱‘‘統(tǒng)計(jì)’’。

ggplot2 中的提供了30 多種‘‘統(tǒng)計(jì)’’译仗,均以stat_xxxx() 的方式命名古劲$趾铮可以分為兩類:

    1. 可以在幾何對(duì)象函數(shù)geom_*() 中創(chuàng)建滑绒,通常直接使用后者即可:
image.png
    1. 不能在幾何對(duì)象函數(shù)geom_*() 中創(chuàng)建


      image.png
image.png

例子:
用stat_summary() 做統(tǒng)計(jì)匯總并繪圖杠览。通過(guò)傳遞函數(shù)做統(tǒng)計(jì)計(jì)算纵势,首先注意x 和y 美學(xué)映射到calss 和hwy; fun = mean 是根據(jù)x 計(jì)算y钦铁,故對(duì)每個(gè)車型計(jì)算一個(gè)平均的hwy;fun.max, fun.min 同樣根據(jù)x 分別計(jì)算y 的均值加減標(biāo)準(zhǔn)差佛点;統(tǒng)計(jì)計(jì)算的結(jié)果將傳遞給幾何對(duì)象參數(shù)geom 用于繪圖:

ggplot(mpg, aes(x = class, y = hwy)) +
   geom_violin(trim = FALSE, alpha = 0.5, color = "green") + # 小提琴圖
   stat_summary(fun = mean,
                           fun.min = function(x) {mean(x) - sd(x)},
                           fun.max = function(x) {mean(x) + sd(x)},
                           geom = "pointrange", color = "red")
image.png

用stat_smooth(), 與geom_smooth() 相同, 添加光滑曲線:

  • method: 指定平滑曲線的統(tǒng)計(jì)函數(shù)超营,如lm 線性回歸, glm 廣義線性回歸, loess 多項(xiàng)式回歸, gam 廣義加法模型(mgcv 包) , rlm 穩(wěn)健回歸(MASS 包) 等
  • formula: 指定平滑曲線的方程演闭,如y ~ x, y ~ poly(x, 2), y ~ log(x) 颓帝,需要與method 參數(shù)搭配使用
  • se: 設(shè)置是否繪制置信區(qū)間
ggplot(mpg, aes(displ, hwy)) +
           geom_point() +
         stat_smooth(method = "lm",
                              formula = y ~ splines::bs(x, 3),
                             se = FALSE) # 不繪制置信區(qū)間
image.png

坐標(biāo)系(Coordinante)

ggplot2 默認(rèn)坐標(biāo)系是直角坐標(biāo)系coord_cartesian()见间,常用的坐標(biāo)系操作還有:


image.png

坐標(biāo)軸翻轉(zhuǎn)工猜,從水平圖到豎直圖:

ggplot(mpg, aes(class, hwy)) +
         geom_boxplot() + # 箱線圖
         coord_flip() # 從豎直變成水平
image.png

直角坐標(biāo)下的條形圖篷帅,轉(zhuǎn)化為極坐標(biāo)下的風(fēng)玫瑰圖:

ggplot(mpg, aes(class, fill = drv)) +
     geom_bar() +
     coord_polar()
image.png

位置調(diào)整(Position adjustments)

(1) 條形圖中的條形位置調(diào)整:
position_stack(): 豎直堆疊
position_fill(): 豎直(百分比) 堆疊魏身,按比例放縮保證總高度為1
position_dodge(), position_dodge2(): 水平堆疊##使用更多

ggplot(mpg, aes(class, fill = drv)) +
   geom_bar(position = position_dodge(preserve = "single"))
image.png

(2) 散點(diǎn)圖中的散點(diǎn)位置調(diào)整:

  • position_nudge(): 將散點(diǎn)移動(dòng)固定的偏移量
  • position_jitter(): 給每個(gè)散點(diǎn)增加一點(diǎn)隨機(jī)噪聲(抖散圖)
  • position_jitterdodge(): 增加一點(diǎn)隨機(jī)噪聲并躲避組內(nèi)的點(diǎn)箭昵,特別用于箱線圖+ 散點(diǎn)圖

有時(shí)候需要將多個(gè)圖形排布在畫板中,借助patchwork 包更方便泡一。

library(patchwork)
p1 = ggplot(mpg, aes(displ, hwy)) +
   geom_point()
p2 = ggplot(mpg, aes(drv, displ)) +
   geom_boxplot()
p3 = ggplot(mpg, aes(drv)) +
   geom_bar()
p1 | (p2 / p3)
image.png

分面鼻忠、主題杈绸、輸出

  • 1 分面(Facet): 利用分類變量將圖形分為若干個(gè)‘‘面” (子圖)瞳脓,即對(duì)數(shù)據(jù)分組再分別繪圖,稱為‘‘分面’’钝吮。
    (1) facet_wrap(): 封裝分面奇瘦,先生成一維的面板系列劲弦,再封裝到二維中。
  • 分面形式:~ 分類變量, ~ 分類變量1 + 分類變量2
  • scales 參數(shù)設(shè)置是否共用坐標(biāo)刻度邑跪,"fixed"(默認(rèn), 共用), "free"(不共用)画畅,也可以用free_x, free_y 單獨(dú)設(shè)置
  • 參數(shù)nrow 和ncol 可設(shè)置子圖的放置方式
ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   facet_wrap(~ drv, scales = "free")
image.png
ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   facet_wrap(~ drv + cyl)
image.png

(2) facet_grid(): 網(wǎng)格分面轴踱,生成二維的面板網(wǎng)格淫僻,面板的行與列通過(guò)分面變量定義。

  • 分面形式:行分類變量~ 列分類變量
ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   facet_grid(drv ~ cyl)
image.png
    1. 主題(theme)
      你可以為圖形選擇不同風(fēng)格的主題(外觀)棕所,ggplot2 提供了8 套可選主題:


      image.png

使用或修改主題琳省,只需要添加主題圖層:

ggplot(mpg, aes(displ, hwy, color = drv)) +
   geom_point() +
   theme_bw()
image.png

更多的主題岛啸,還可以用ggthemes 包坚踩,其中包含一些頂級(jí)期刊專用繪圖主題瓤狐;當(dāng)然也可以用theme()函數(shù)定制自己的主題(略)础锐。

  • 3 輸出(output)
    用ggsave() 函數(shù),將當(dāng)前圖形保存為想要格式的圖形文件拦宣,如png, pdf 等:
    ggsave("my_plot.pdf", width = 8, height = 6, dpi = 300)## 參數(shù)width 和height 通常只設(shè)置其中一個(gè)

ggplot2 圖形示例

Nathan Yau 將數(shù)據(jù)可視化的過(guò)程總結(jié)為如下的4 個(gè)思索:

  • 你擁有什么樣的數(shù)據(jù)?
  • 你想要表達(dá)什么樣的數(shù)據(jù)信息?
  • 你會(huì)什么樣的數(shù)據(jù)可視化方法?
  • 你從圖表中能獲得什么樣的數(shù)據(jù)信息?

一般的6類:

類別比較圖鸵隧、數(shù)據(jù)關(guān)系圖意推、數(shù)據(jù)分布圖菊值、時(shí)間序列圖、局部整體圖昵宇、地理空間圖

ggpubr 包提供了很多函數(shù)瓦哎,輕松繪制適合用于期刊論文發(fā)表的圖形

(1)類別比較圖:類別比較圖典徊,通常是展示和比較分類變量或分類變量組合的頻數(shù)


image.png

熱圖:鄰接矩陣卒落、混淆矩陣儡毕、相關(guān)系數(shù)矩陣也可以用熱圖來(lái)可視化展示
ComplexHeatmap 包可繪制更復(fù)雜的熱圖:帶層次聚類的熱圖扑媚。

(2)數(shù)據(jù)關(guān)系圖
主要包括:

  • 數(shù)據(jù)相關(guān)性圖:展示兩個(gè)或多個(gè)變量之間的關(guān)系掠手,比如散點(diǎn)圖、氣泡圖、曲面圖等

  • 數(shù)據(jù)流向圖:展示兩個(gè)或多個(gè)狀態(tài)或情形之間的流動(dòng)量或關(guān)系強(qiáng)度两残,比如網(wǎng)絡(luò)圖等


    image.png

    網(wǎng)絡(luò)圖:網(wǎng)絡(luò)圖可以可視化實(shí)體(個(gè)體/事物)間的內(nèi)部關(guān)系人弓,比如社會(huì)媒體網(wǎng)絡(luò)着逐、朋友網(wǎng)絡(luò)耸别、合作網(wǎng)絡(luò)、疾病傳播網(wǎng)絡(luò)等吟榴。
    可視化網(wǎng)絡(luò)圖的包有:igraph, tidygraph + ggraph. 還有更加強(qiáng)大的visNetwork 包囊扳。

  • 結(jié)點(diǎn)數(shù)據(jù)锥咸,包括id(用于邊數(shù)據(jù)),label(用于圖顯示)熊锭,group(設(shè)置分組顏色)碗殷,value(權(quán)重速缨,關(guān)聯(lián)結(jié)點(diǎn)的大醒)等

  • 邊數(shù)據(jù)搁吓,包括from(起點(diǎn))堕仔,to(終點(diǎn))晌区,label(用于圖顯示)契讲,value(權(quán)重滑频,關(guān)聯(lián)邊的粗細(xì))等

library(visNetwork)
visNetwork(nodes, edges)
image.png

(3) 數(shù)據(jù)分布圖:主要展示數(shù)據(jù)中數(shù)值出現(xiàn)的頻率或分布規(guī)律银伟,比如直方圖绘搞、概率密度圖夯辖、箱線圖等


image.png

(4)時(shí)間序列圖:展示數(shù)據(jù)隨時(shí)間的變化規(guī)律或者趨勢(shì)蒿褂。比如,括折線圖娄帖、面積圖等昙楚。


image.png

折線圖與面積圖:用geom_line() 與geom_area()繪制
(5)局部整體圖:堪旧,展示部分與整體的關(guān)系淳梦。比如谭跨,餅圖李滴、樹狀圖等


image.png

(6)地理空間圖:是在地圖上展示數(shù)據(jù)關(guān)系所坯,即與地理位置信息聯(lián)系起來(lái)繪圖芹助。地理位置通常是用經(jīng)度闲先、緯度表示伺糠。


image.png

sf 包實(shí)現(xiàn)了將簡(jiǎn)單要素表示為R 中的data.frame, 以及一系列處理此類數(shù)據(jù)的工具训桶。
sf 格式數(shù)據(jù)框中,屬性要素是正常的列谤专,幾何要素(geometry) 存放為列表列置侍。

(7)動(dòng)態(tài)交互圖-ggplotly 包

只要對(duì)ggplot2 繪制的圖形對(duì)象套一個(gè)ggplotly() 函數(shù)拦焚,則圖形變成可交互狀態(tài):當(dāng)鼠標(biāo)移動(dòng)到圖形元素上時(shí)耕漱,將自動(dòng)顯示對(duì)應(yīng)的數(shù)值。

library(plotly)
p = gapminder %>%
    filter(year == 2007) %>%
    ggplot(aes(gdpPercap, lifeExp, size = pop, color = continent)) +
   geom_point() +
   theme_bw()
ggplotly(p)

gganimate 包是基于ggplot2 的動(dòng)態(tài)可視化拓展包灾梦,讓圖形元素隨時(shí)間等逐幀變化起來(lái)若河,可導(dǎo)出為.gif 動(dòng)圖寞宫。

library(gganimate)
ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop)) +
    geom_point() +
    geom_point(aes(color = continent)) +
    scale_x_log10() +
   labs(title = " 年份: {frame_time}", x = " 人均GDP", y = " 預(yù)期壽命") +
   transition_time(year)
anim_save("output/gapminder.gif") # 保存為gif 文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辈赋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坝辫,更是在濱河造成了極大的恐慌射亏,老刑警劉巖智润,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窟绷,死亡現(xiàn)場(chǎng)離奇詭異钾麸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)饭尝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)献宫,“玉大人钥平,你說(shuō)我怎么就攤上這事℃⑼荆” “怎么了涉瘾?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捷兰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)贡茅,這世上最難降的妖魔是什么秘蛇? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮顶考,結(jié)果婚禮上赁还,老公的妹妹穿的比我還像新娘。我一直安慰自己驹沿,他們只是感情好艘策,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渊季,像睡著了一般朋蔫。 火紅的嫁衣襯著肌膚如雪罚渐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天驯妄,我揣著相機(jī)與錄音搅轿,去河邊找鬼。 笑死富玷,一個(gè)胖子當(dāng)著我的面吹牛璧坟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赎懦,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼雀鹃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了励两?” 一聲冷哼從身側(cè)響起黎茎,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎当悔,沒(méi)想到半個(gè)月后傅瞻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盲憎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年嗅骄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饼疙。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溺森,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窑眯,到底是詐尸還是另有隱情屏积,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布磅甩,位于F島的核電站炊林,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卷要。R本人自食惡果不足惜渣聚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望却妨。 院中可真熱鬧饵逐,春花似錦、人聲如沸彪标。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至薄声,卻和暖如春当船,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背默辨。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工德频, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缩幸。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓壹置,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親表谊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钞护,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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