大师兄的Python机器学习笔记:Numpy库、Scipy库和Matplotlib库(三)

大师兄的Python机器学习笔记:Numpy库、Scipy库和Matplotlib库(二)
大师兄的Python机器学习笔记:数据预处理

四、Matplotlib库

1. Matplotlib库的功能
  • 用于实现数据可视化功能。
  • 可以实现各种图表的绘制、如条形图,散点图,条形图,饼图,堆叠图,3D 图和地图图表。
  • Matplotlib库需要单独安装,指令为:pip install matplotlib
2. 实现简单的视图
2.1 matplotlib.pyplot
  • matplotlib.pyplot是一个函数集合,其风格与MATLAB相似。
  • 基于惯例,我们通常将matplotlib.pyplot导入为plt
2.2 plt.plot(x,y,format_string, **kwargs)
  • 根据坐标绘制图标。
  • x,y分表代表x轴、y轴,可以是列表或数组(ndarray)。
  • format_string 为控制曲线的格式字符串,由 颜色字符、风格字符和标记字符组成:
字符串 案例
颜色字符 'b' : 蓝色
'#008000' : RGB颜色
0.8 : 灰度值字符串
风格字符 '-' : 实线
'--' : 破折线
'-.' : 点划线
':' : 虚线
'' : 无线条
标记字符 '.' : 点标记
'o' : 实心圈
'v' : 倒三角
'^' : 上三角
  • **kwargs 表示更多条线的参数。
2.3 plt.show()
  • 根据配置和值绘制出视图。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":")
>>>plt.show()
2.4 plt.subplots()
  • 返回Figure对象和Axes(数组)对象。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>plt.plot(x,y,":")

>>>fig,ax = plt.subplots()
>>>print("Figure:",fig)
>>>print("Axes:",ax)
Figure: Figure(432x288)
Axes: AxesSubplot(0.125,0.125;0.775x0.755)
3. 环境配置
3.1 图标
  • plt.plot()函数中增加参数label
  • 使用plt.legend()生成图例。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":",label="label sample")
>>>plt.legend() # 生成图例
>>>plt.show()
3.2 标题
  • 使用plt.title()添加标题。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":",label="label sample")
>>>plt.title('sample title')
>>>plt.legend()
>>>plt.show()
3.3 标签
  • 使用plt.xlabel()plt.ylabel()为x轴、y轴添加标签。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":",label="label sample")
>>>plt.title('sample title')
>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.legend()
>>>plt.show()
3.4 网格线
  • 通过plt.grid()增加网格线,参数:
参数 意义
b 是否显示网格线 True / False
which 模式 'major' / 'minor' / 'both'
axis 绘制哪个方向的网格线 'both' / 'x' / 'y'
color/c 颜色 各种颜色的首字母
linestyle/ls 网格线风格 '-' / '--' / '-. / ':' / 'None' / ' '
linewidth 网格线宽度 数字
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":",label="label sample")
>>>plt.title('sample title')
>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.grid(b=True,which='major',linewidth=0.5)
>>>plt.legend()
>>>plt.show()
3.5 中文显示
  • matplotlib需要通过配置plt.rcParams参数正常显示中文。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.plot(x,y,":",label="label样式")

>>>plt.rcParams['font.sans-serif']=['SimHei']  # 配置字体
>>>plt.rcParams['axes.unicode_minus']=False  # 正常显示符号

>>>plt.title('中文标题')
>>>plt.xlabel('x轴')
>>>plt.ylabel('y轴')
>>>plt.grid(b=True,which='major',linewidth=0.5)
>>>plt.legend()
>>>plt.show()
4. 图标类型
4.1 条形图
  • plt.bar()函数绘制条形图。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.bar(x,y,label= 'sample1')
>>>plt.bar(y,x,label= 'sample2',color='g')

>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.legend()
>>>plt.show()
4.2 直方图
  • plt.hist()函数绘制条形图。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>data = np.random.random_integers(100,size=(100))
>>>bins=np.array(range(0,100,10))
>>>plt.hist(data,bins,histtype='bar',rwidth=0.8)

>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.legend()
>>>plt.show()
4.3 散点图
  • plt.scatter()函数绘制散点图。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>plt.scatter(x,y,label='sample',color='b',s=20,marker="o")
>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.legend()
>>>plt.show()
4.4 堆叠图
  • plt.stackplot()函数绘制堆叠图。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>data1 = np.array([1,3,5,7,9])
>>>data2 = np.array([2,4,6,8,10])
>>>data3 = np.array([1,2,3,4,5])
>>>data4 = np.array([6,7,8,9,10])

>>>plt.stackplot(data1,data2,data3,data4,colors=['b','r','m','k'])
>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>plt.legend()
>>>plt.show()
4.5 饼图
  • plt.pie()函数绘制堆叠图。
  • explode表示哪些切片需要拉出。
  • autopct表示显示百分比的方式。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>data = np.random.random_integers(100,size=(5))
>>>title=["A","B","C","D","E"]
>>>colours = ['b','r','m','k','c']
>>>plt.pie(data,labels=title,colors=colours,startangle=90,shadow=True,autopct='%1.1f%%',explode=(0.1,0,0,0,0))

>>>plt.legend()
>>>plt.show()
5. 时间戳的使用
  • 使用matplotlib.dates模块将时间戳转换为matplotlib格式。
>>>from datetime import datetime,date,timedelta
>>>import time
>>>import matplotlib.dates as mdates
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>data = np.arange(0,7)
>>>ts_start = datetime(2018,3,30,0,0,0)
>>>ts_now = datetime(2019,3,30,0,0,0)
>>>formatter = mdates.DateFormatter("%Y-%m-%d")
>>>delta = timedelta(5*10^10)
>>>dates = mdates.drange(ts_start,ts_now,delta)

>>>fig,ax = plt.subplots()
>>>plt.plot_date(dates,data)
>>>ax.xaxis.set_major_formatter(formatter)
>>>ax.xaxis.set_tick_params(rotation=30,labelsize=10)

>>>plt.show()
6. 颜色和样式
6.1 改变标签颜色
  • 使用axis.label.set_color(color)
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>fig,ax = plt.subplots()

>>>plt.plot(x,y,":",label="label sample")
>>>plt.xlabel('xsample')
>>>plt.ylabel('ysample')
>>>ax.xaxis.label.set_color('b') # 改变x轴label颜色
>>>ax.yaxis.label.set_color('c') # 改变y轴label颜色
>>>plt.title('sample title')
>>>plt.legend()
>>>plt.show()
6.2 填充颜色
  • 使用axis.fill_between(x,y1,y2,where=None,interpolate=False, step=None, *, data=None, **kwargs)填充颜色
参数 含义
x 表示覆盖的区域
y1 表示覆盖的下限
y2 表示覆盖的上限
where 制定覆盖区域,默认为None
interpolate 是否有重叠区域
step 步长
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>plt.plot(x,y,":")

>>>fig,ax = plt.subplots()
>>>ax.fill_between(x,0,y,facecolor='b',alpha=0.5)
>>>plt.show()
6.3 自定义边框
  • 可以使用axis.spines[position]获得边框,position可以是left,right,top,bottom。
  • 通过axis.spines.set_color(color)改变边框颜色。
  • 通过axis.spines.set_visible(bool)设置是否隐藏边框。
  • 通过axis.spines.set_linewidth(n)设置边框宽度。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>fig,ax = plt.subplots()
>>>ax.spines['top'].set_color('b') # 改变顶部边框的颜色
>>>ax.spines['bottom'].set_visible(False) # 隐藏底部边框
>>>ax.spines['left'].set_linewidth(10) # 改变左侧边框宽度
6.4 自定义刻度
  • 可以使用axis.tick_params(axis, colors)自定义刻度颜色。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>fig,ax = plt.subplots()
>>>ax.tick_params(axis='x', colors='b')
>>>ax.tick_params(axis='y',colors='r')
6.5 添加水平线和垂直线
  • 通过plt.axhline(y, color, linestyle, linewidth)添加水平线。
  • 通过plt.axvline(y, color, linestyle, linewidth)添加垂直线。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

[图片上传中...(下载.png-df23ca-1585644395419-0)]
>>>fig,ax = plt.subplots()
>>>ax.axhline(5, c='b',ls='--', lw=1,)
>>>ax.axvline(5, c='r',ls='-', lw=1,)
6.6 风格美化
  • 使用plt.style.use(style)使用指定的风格。
  • 使用plt.style.available查看所有可以使用的风格。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>plt.style.use('dark_background')
>>>plt.plot(x,y,label="label sample")
>>>plt.show()
7.文本注解
7.1 简单的文本注解
  • 使用text(x, y, s, fontdict=None, **kwargs)添加注解。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>plt.style.use('ggplot')
>>>plt.text(5,7,'text sample',color='b')
>>>plt.plot(x,y,label="label sample")
>>>plt.show()
7.2 带箭头的文本注解
  • 使用annotate(s, xy, *args, **kwargs)添加带箭头的文本注解。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>plt.style.use('ggplot')
>>>plt.annotate('text sample',(5,7),
>>>             xytext=(0.6, 0.7), textcoords='axes fraction',
>>>             arrowprops = dict(facecolor='red',color='red'),
>>>             color='b')
>>>plt.plot(x,y,label="label sample")
>>>plt.show()
7.3 使用框+文本的注解
  • 可以通过bbox参数对注解添加边框。
  • bbox接受一个dict,包含以下参数:
参数 含义
boxstyle 边框的类型
fc 背景颜色
ec 边框线的透明度
alpha 字体的透明度
lw 线的粗细
rotation 角度
  • boxstyle参数包含的类型:
名称 基础属性
Circle circle pad=0.3
DArrow darrow pad=0.3
LArrow larrow pad=0.3
RArrow rarrow pad=0.3
Round round pad=0.3,rounding_size=None
Round4 round4 pad=0.3,rounding_size=None
Roundtooth roundtooth pad=0.3,tooth_size=None
Sawtooth sawtooth pad=0.3,tooth_size=None
Square square pad=0.3
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>bbox = dict(boxstyle="larrow",fc='w',ec="r",lw=1)
>>>t = plt.text(7,6,"sample",ha="center",va="center",size=10,bbox=bbox)
>>>plt.plot(x,y,label="label sample")
>>>plt.show()
8. 多图表
8.1 子图
  • 使用plt.subplot(m,n,p)添加子图,实现在一张图表里放多个图表。
  • m和n分表代表行和列。
  • p代表图标的编号。
  • 子图的顺序是从左到右,从上到下。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>#子图1
>>>plt.subplot(2,2,1)
>>>plt.plot(x,y,label="sample1",c='b')
>>>plt.legend()

>>>#子图2
>>>plt.subplot(2,2,2)
>>>plt.plot(x,y,label="sample2",c='r')
>>>plt.legend()

>>>#子图3
>>>plt.subplot(2,2,3)
>>>plt.plot(x,y,label="sample3",c='m')
>>>plt.legend()

>>>#子图4
>>>plt.subplot(2,2,4)
>>>plt.plot(x,y,label="sample4",c='y')
>>>plt.legend()

>>>plt.show()
8.2 跨越网格的子图
  • 使用plt.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)可以实现在一张图表里放多个跨越网格的图表。
  • shape表示大图表的形状。
  • loc表示子图的位置。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>#子图1
>>>plt.subplot2grid((4,4),(0,0),colspan=2)
>>>plt.plot(x,y,label="sample1",c='b')
>>>plt.legend()

>>>#子图2
>>>plt.subplot2grid((4,4),(0,3),rowspan=2)
>>>plt.plot(x,y,label="sample2",c='r')
>>>plt.legend()

>>>#子图3
>>>plt.subplot2grid((4,4),(2,1),rowspan=2,colspan=2)
>>>plt.plot(x,y,label="sample3",c='m')
>>>plt.legend()

>>>plt.show()
8.3 共享X轴
  • 通过设置属性sharex参数实现共享x轴。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>x1 = np.array(range(1,20))
>>>y1 = np.array(range(20,1,-1))

>>>x2 = np.array(range(1,30))
>>>y2 = np.array(range(30,1,-1))

>>>plt.subplots_adjust(wspace =0, hspace =0)#调整子图间距

>>>#子图1
>>>ax=plt.subplot2grid((3,1),(0,0))
>>>ax.get_xaxis().set_visible(False) # 隐藏x轴
>>>ax.spines['bottom'].set_visible(False) # 隐藏下边框
>>>plt.plot(x,y,label="sample1",c='b')
>>>plt.legend()

>>>#子图2
>>>ax1=plt.subplot2grid((3,1),(1,0),sharex=ax)
>>>ax1.get_xaxis().set_visible(False)# 隐藏x轴
>>>ax1.spines['bottom'].set_visible(False) # 隐藏下边框
>>>ax1.spines['top'].set_visible(False) # 隐藏上边框
>>>plt.plot(x1,y1,label="sample2",c='r')
>>>plt.legend()

>>>#子图3
>>>ax2=plt.subplot2grid((3,1),(2,0),sharex=ax)
>>>ax2.spines['top'].set_visible(False) # 隐藏上边框
>>>plt.plot(x2,y2,label="sample3",c='m')
>>>plt.legend()

>>>plt.show()
8.4 共享y轴
  • 通过设置属性sharey参数实现共享x轴。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>x1 = np.array(range(1,20))
>>>y1 = np.array(range(20,1,-1))

>>>x2 = np.array(range(1,30))
>>>y2 = np.array(range(30,1,-1))

>>>plt.subplots_adjust(wspace =0, hspace =0)#调整子图间距

>>>#子图1
>>>ax=plt.subplot2grid((1,3),(0,0))
>>>plt.plot(x,y,label="sample1",c='b')
>>>plt.legend()

>>>#子图2
>>>ax1=plt.subplot2grid((1,3),(0,1),sharey=ax)
>>>ax1.get_yaxis().set_visible(False)# 隐藏x轴
>>>ax1.spines['left'].set_visible(False) # 隐藏左边框
>>>plt.plot(x1,y1,label="sample2",c='r')
>>>plt.legend()

>>>#子图3
>>>ax2=plt.subplot2grid((1,3),(0,2),sharey=ax)
>>>ax2.get_yaxis().set_visible(False) # 隐藏x轴
>>>ax2.spines['left'].set_visible(False) # 隐藏左边框
>>>plt.plot(x2,y2,label="sample3",c='m')
>>>plt.legend()
>>>plt.show()
9. 自定义图标
9.1 自定义图标基础属性
  • 可以通过修改plt.legend()函数的参数自定义图标,以下列出部分常用属性:
参数 含义
loc 自定义位置 string/int
nco 自定义列数 int
fontsize 自定义字体大小 string/int
frameon 边框 bool
facecolor 背景颜色 string
edgecolor 边框颜色 string
title 标题 string
prop 属性 dict
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>for i in range(1,4):
>>>    plt.plot(x+i,y+i,label="label sample{}".format(i))

>>>leg = plt.legend(loc='upper center',ncol=2,title='sample',facecolor='b',prop={'size':12})
>>>leg.get_frame().set_alpha(0.4) # 改变透明度
>>>plt.show()
9.1 更精准的定位
  • 可以通过plt.legend()bbox_to_anchor=(x, y, width, height)参数实现精准定位。
  • `bbox_to_anchor'可以将图标定位到图例外。
  • `bbox_to_anchor'参数接受一个元祖,分别代表图标的坐标、宽和高。
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))

>>>for i in range(1,4):
>>>    plt.plot(x+i,y+i,label="label sample{}".format(i))

>>>leg = plt.legend(title='sample',bbox_to_anchor=(1.5,1))
>>>plt.show()
10. 3D 绘图
  • mpl_toolkits包是matplotlib提供的三维绘制包,可以使用basemap中的Axes3D模块实现3D绘图。
10.1 实现简单的3D绘图
  • 基本用法与2D类似,但是需要通过Axes3D()函数将figure转为3D对象。
  • 使用plot_wireframe()函数绘制线框图。
>>>from mpl_toolkits.mplot3d import Axes3D
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>z = np.array([np.sin(x)])

>>>fig = plt.figure()
>>>ax = Axes3D(fig)

>>>ax.plot_wireframe(x,y,z)
>>>ax.set_xlabel('sample x')
>>>ax.set_ylabel('sample y')
>>>ax.set_zlabel('sample z')

>>>plt.show()
10.2 3D散点图
  • 与2D一样,使用plt.scatter绘制散点图,只是多了一个维度。
>>>from mpl_toolkits.mplot3d import Axes3D
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>z = np.array([np.sin(x)])

>>>fig = plt.figure()
>>>ax = Axes3D(fig)

>>>ax.scatter(x,y,z,c='b',marker='o')
>>>ax.set_xlabel('sample x')
>>>ax.set_ylabel('sample y')
>>>ax.set_zlabel('sample z')

>>>plt.show()
10.3 3D条形图
  • 由于要考虑到条的深度,所以3D条形图的维度会比3D更复杂。
  • 可以使用`plt.bar3d(x,y,z,dx,dy,dz)'绘制3D条形图。
>>>from mpl_toolkits.mplot3d import Axes3D
>>>import matplotlib.pyplot as plt
>>>import numpy as np

>>>x = np.array(range(1,10))
>>>y = np.array(range(10,1,-1))
>>>z = np.array(np.cos(x))

>>>dx=dy= np.ones(9)
>>>dz= np.array(range(1,10))
>>>fig = plt.figure()
>>>ax = Axes3D(fig)

>>>ax.bar3d(x,y,z,dx,dy,dz)
>>>ax.set_xlabel('sample x')
>>>ax.set_ylabel('sample y')
>>>ax.set_zlabel('sample z')

>>>plt.show()

参考资料


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容