基于pyecharts V1.x的數(shù)據(jù)可視化

1嫁审、Pyecharts簡(jiǎn)介

Echarts是一個(gè)由百度開源的數(shù)據(jù)可視化工具特笋,憑借著良好的交互性则剃,精巧的圖表設(shè)計(jì)粗悯,得到了眾多開發(fā)者的認(rèn)可虚循。而 Python 是一門富有表達(dá)力的語言,很適合用于數(shù)據(jù)處理样傍。當(dāng)數(shù)據(jù)分析遇上數(shù)據(jù)可視化時(shí)横缔,Pyecharts誕生了。

Pyecharts最早只適用于工程領(lǐng)域的可視化開發(fā)铭乾,但是隨著其對(duì)Jupyter notebook剪廉、Jupyter lab等交互式開發(fā)工具的支持不斷加強(qiáng),現(xiàn)在也開始被許多數(shù)據(jù)分析師應(yīng)用到數(shù)據(jù)探索中炕檩。

1.1斗蒋、Pyecharts各個(gè)版本與Python的對(duì)應(yīng)關(guān)系

pyecharts 分為 v0.5.x 和 v1.x 兩個(gè)大版本捌斧,v0.5.x 和 v1.x 間不兼容,v1.x 是一個(gè)全新的版本泉沾。

Pyecharts各版本與python的對(duì)應(yīng)關(guān)系見下表

版本 V0.5.x V1.x.x
python 版本選擇 Python2.7捞蚂,3.4+ Python3.6+

注 :經(jīng)Pyecharts開發(fā)團(tuán)隊(duì)決定,0.5.x 版本將不再進(jìn)行維護(hù)

1.2跷究、Pyecharts v1系列的新特性
  • 全面擁抱 Python3 和 TypeHint

pyecharts v1.0.0 停止對(duì) Python2.7姓迅,3.4~3.5 版本的支持和維護(hù),僅支持 Python3.6+俊马。如果還不知道什么是 TypeHint 的同學(xué)丁存,勸你盡早入坑,官方入坑指南 typing — Support for type hints柴我。

在編程界解寝,早已流傳著 動(dòng)態(tài)一時(shí)爽,重構(gòu)火葬場(chǎng) 這樣的真知灼見艘儒,動(dòng)態(tài)語言類型檢查已經(jīng)成為了一種趨勢(shì)聋伦,Javascript 已經(jīng)有了 Typescript,Python 也在力推 TypeHint界睁,雖然 Python 的 TypeHint 實(shí)際上對(duì)于程序的運(yùn)行并沒有任何影響......觉增,但它配合 IDE 和 mypy,或者 pyright 這樣的工具可以在開發(fā)階段趁早發(fā)現(xiàn)問題翻斟。

  • 棄用插件機(jī)制

pyecharts v1.x.x 廢除原有的插件機(jī)制逾礁,包括地圖包插件主題插件,插件的本質(zhì)是提供 pyecharts 運(yùn)行所需要的靜態(tài)資源文件(基本都是 .js 文件)杨赤,所以現(xiàn)在開放了兩種模式提供靜態(tài)資源文件敞斋。

online 模式,使用 pyecharts 官方提供的 assets host疾牲,或者部署自己的 remote host。

local 模式衙解,使用自己本地開啟的文件服務(wù)提供 assets host(離線模式)阳柔。

  • 支持 JupyterLab

對(duì) JupyterLab 的支持一直是很多開發(fā)者關(guān)心的功能,畢竟 JupyterLab 號(hào)稱是下一代的 Notebook蚓峦。pyecharts 1.0.0 開始支持在 JupyterLab 中渲染圖表啦舌剂!

#使用JupytrLab需添加如下代碼
from pyecharts.globals import CurrentConfig,NotebookType
CurrentConfig,NOTEBOOK_TYPE=NotebookType.JUPYTER_LAB
#除了以上代碼,還需在渲染之前執(zhí)行加載JavaScript腳本的代碼暑椰,這里以柱狀圖對(duì)象bar為例
bar.load_javascript()
#然后再渲染即可
bar.render_notebook()

  • 代碼風(fēng)格重構(gòu)

所有配置項(xiàng)均 OOP霍转,在新版本的 pyecharts 中,一切皆 Options一汽。配置項(xiàng)種類更多避消,可操作性更強(qiáng)低滩,可以畫出更豐富的圖表,pyecharts 官方畫廊 pyecharts/pyecharts-gallery岩喷。

0.5.X 版本寫法

from pyecharts import Bar

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
bar = Bar("柱狀圖數(shù)據(jù)堆疊示例")
bar.add("商家A", attr, v1, is_stack=True)
bar.add("商家B", attr, v2, is_stack=True)
bar.render()

1.x.x 版本寫法恕沫,支持鏈?zhǔn)秸{(diào)用

import pyecharts.options as opts
from pyecharts.charts import Bar

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]


bar = (
    Bar()
    .add_xaxis(attr)
    .add_yaxis("商家A", v1, stack="stack1")
    .add_yaxis("商家B", v2, stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="柱狀圖數(shù)據(jù)堆疊示例"))
)

bar.render()
  • 支持 selenium/phantomjs 渲染圖片

pyecharts 1.x.x 提供兩種模式渲染圖片,selenium 和 phantomjs纱意,分別需要安裝 snapshot-seleniumsnapshot-phantomjs婶溯。

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot


def bar_chart() -> Bar:
    c = (
        Bar()
        .add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
        .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
        .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-測(cè)試渲染圖片"))
    )
    return c


def render_chart_by_selenium():
    from snapshot_selenium import snapshot
    make_snapshot(snapshot, bar_chart().render(), "bar0.png")


def render_chart_by_phantomjs():
    from snapshot_phantomjs import snapshot
    make_snapshot(snapshot, bar_chart().render(), "bar1.png")

看到新版的種種優(yōu)勢(shì),小伙伴們是不是躍躍欲試了偷霉?接下來我們安裝并通過一系列代碼體驗(yàn)Pyecharts迄委。

1.2、安裝 Pyecharts

v1系列版本的Pyecharts僅支持python3.6+ 类少,即如果你的python是3.6+叙身,則默認(rèn)會(huì)下載最新版的pyecharts。

pip install -i https://pypi.douban.com/simple pyecharts -U #使用國(guó)內(nèi)軟件源下載速度會(huì)快很多

安裝pyecharts v0.5系列版本:

pip install -i https://pypi.douban.com/simple pyecharts==0.5.11 

2瞒滴、Pyecharts繪圖

繪圖前需要導(dǎo)入相關(guān)模塊曲梗,根據(jù)繪制的圖形不同,導(dǎo)入的模塊會(huì)有些許差異

from pyecharts import options as opts #引入配置項(xiàng)入口
from pyecharts.charts import Bar,Line #導(dǎo)入相關(guān)圖形的構(gòu)造方法
2.1妓忍、pyecharts繪圖步驟

pyecharts繪圖大致是按以下五個(gè)步驟來的

這里以繪制柱形圖為例

#1虏两、構(gòu)造柱形圖對(duì)象
bar = Bar()
#2、添加x軸數(shù)據(jù)
bar.add_xaxis(xaxis_data=x_data)
#   添加y軸數(shù)據(jù)
bar.add_yaxis( "系列名稱",                     #設(shè)置系列名稱
               yaxis_data=y_data,             #設(shè)置y軸系列數(shù)據(jù)
              ......                          #更多參數(shù)可以查看官網(wǎng)
             )
#3世剖、對(duì)系列進(jìn)行配置
bar.set_series_opts(                          #主要是對(duì)圖元定罢、文字、
              ......                          #標(biāo)簽旁瘫、線型祖凫、標(biāo)記點(diǎn)、標(biāo)記線 等內(nèi)容進(jìn)行配置 
)
#4酬凳、對(duì)全局進(jìn)行配置
bar.set_global_opts(                         #可配置內(nèi)容包括:x惠况、y坐標(biāo)軸;初始化配置宁仔;
              ......                         #工具箱配置稠屠;標(biāo)題;區(qū)域縮放翎苫;圖例权埠;
                                             #提示框等參數(shù)配置
) 
#5、渲染圖片
bar.render(path)                             #將圖片渲染為html文件
bar.render_notebook()                        #直接在jupytr notebook中渲染

基于分類/時(shí)間的數(shù)據(jù)對(duì)比煎谍,通常需用到比較型圖表攘蔽。用戶通過圖表輕松識(shí)別最大/最小值,查看當(dāng)前和過去的數(shù)據(jù)變動(dòng)情況呐粘。

常見場(chǎng)景:哪個(gè)地區(qū)的收件量最多满俗?今年的收入和去年相比如何转捕?商品的銷量在不同地區(qū)、時(shí)間維度上的差異……

2.2漫雷、 柱狀圖的繪制

當(dāng)數(shù)據(jù)量少的時(shí)候我們使用柱狀圖就可以了瓜富。pyecharts繪制柱狀圖表灰常簡(jiǎn)單咯,啥也不說了降盹,上代碼与柑。

from example.commons import Faker       #調(diào)用官方提供的測(cè)試數(shù)據(jù)
from pyecharts import options as opts   #配置入口模塊
from pyecharts.charts import Bar        #柱狀圖構(gòu)造方法

bar = Bar()#構(gòu)造bar對(duì)象
bar.add_xaxis(Faker.choose()) #添加x軸數(shù)據(jù)       
bar.add_yaxis("商家A", Faker.values()) #添加一個(gè)系列數(shù)據(jù),這里是A商家的數(shù)據(jù)
bar.add_yaxis("商家B", Faker.values()) #添加另一個(gè)系列數(shù)據(jù)
bar.set_global_opts(title_opts=opts.TitleOpts(
                                                   title="Bar-基本示例", #設(shè)置主標(biāo)題
                                                   subtitle="我是副標(biāo)題" #設(shè)置副標(biāo)題
                                              ))
bar.render_notebook()                   #在jupyter notebook中渲染

效果圖如下

2.3蓄坏、條形圖

當(dāng)條目較多价捧,如大于12條,移動(dòng)端上的柱狀圖會(huì)顯得擁擠不堪涡戳,更適合用條形圖结蟋。一般數(shù)據(jù)條目不超過30條,否則易帶來視覺和記憶負(fù)擔(dān)渔彰。

bar = Bar().add_xaxis(Faker.choose()+Faker.choose()+Faker.choose()) #將數(shù)據(jù)生成三份     
bar.add_yaxis("", Faker.values()+Faker.values()+Faker.values()) #數(shù)據(jù)生成三份
bar.set_global_opts(title_opts=opts.TitleOpts(title="條形圖"))
bar.reversal_axis() #翻轉(zhuǎn)XY軸嵌屎,將柱狀圖轉(zhuǎn)換為條形圖
bar.render_notebook()
2.4、折線圖

當(dāng)數(shù)據(jù)X軸為連續(xù)數(shù)值(如時(shí)間)且我們比較注重觀察數(shù)據(jù)變化趨勢(shì)時(shí)恍涂,折線圖是非常好的選擇宝惰。

import pyecharts.options as opts
from pyecharts.charts import Line

line=Line()
line.add_xaxis(["201{}年/{}季度".format(y,z) 
                for y in range(4) 
                    for z in range(1,5)]) #設(shè)置x軸數(shù)據(jù)
line.add_yaxis(
                "電視機(jī)銷量", 
                [4.80,4.10,6.00,6.50,5.80,5.20,6.80,7.40,
                 6.00,5.60,7.50,7.80,6.30,5.90,8.00,8.40]
              )#設(shè)置y軸數(shù)據(jù)
line.set_global_opts(
    xaxis_opts=opts.AxisOpts(
        axislabel_opts=opts.LabelOpts(rotate=-40),
                            ),#設(shè)置x軸標(biāo)簽旋轉(zhuǎn)角度
    yaxis_opts=opts.AxisOpts(name="銷量(單位/千臺(tái))"),#設(shè)置y軸名稱
    title_opts=opts.TitleOpts(title="折線圖"))        #設(shè)置圖表標(biāo)題

line.render_notebook() #渲染圖表
2.5、南丁格爾-玫瑰圖

當(dāng)對(duì)比差異不是很明顯的數(shù)據(jù)時(shí)再沧,可以使用南丁格爾玫瑰圖尼夺,其原理為:扇形的半徑和面積是平方的關(guān)系,南丁格爾玫瑰圖會(huì)將數(shù)值之間的差異放大炒瘸,適合對(duì)比大小相近的數(shù)值淤堵。它不適合對(duì)比差異較大的數(shù)值。

此外顷扩,因?yàn)閳A有周期性拐邪,玫瑰圖也適于表示周期/時(shí)間概念,比如星期隘截、月份庙睡。依然建議數(shù)據(jù)量不超過30條,超出可考慮條形圖技俐。

def pie_rosetype():
    from pyecharts.charts import Pie
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(["201{}年/{}季度".format(y,z)
                for y in range(2) 
                      for z in range(1,3)], [4.80,4.10,5.80,5.20])],
            radius=["0%", "75%"],          #設(shè)置內(nèi)徑外徑
            rosetype="radius",             #玫瑰圖有兩種類型
            label_opts=opts.LabelOpts(is_show=True),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰圖示例"))
    )
    return c
pie_rosetype().render_notebook()
2.6、雷達(dá)圖

對(duì)于一些多維的性能數(shù)據(jù)统台,如王者榮耀等游戲中的玩家戰(zhàn)力信息雕擂,常用雷達(dá)圖表示。指標(biāo)得分接近圓心贱勃,說明處于較差狀態(tài)井赌,應(yīng)分析改進(jìn)谤逼;指標(biāo)得分接近外邊線,說明處于理想狀態(tài)仇穗。

from pyecharts import options as opts
from pyecharts.charts import Page, Radar

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

def radar_base() -> Radar:
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="KDA", max_=6500),
                opts.RadarIndicatorItem(name="輸出", max_=16000),
                opts.RadarIndicatorItem(name="經(jīng)濟(jì)", max_=30000),
                opts.RadarIndicatorItem(name="生存", max_=38000),
                opts.RadarIndicatorItem(name="推進(jìn)", max_=52000),
                opts.RadarIndicatorItem(name="打野", max_=25000),
            ]
        )
        .add("魯班", v1,            #添加系列名稱及數(shù)據(jù)
             color="red",           #設(shè)置邊框線的顏色
             areastyle_opts = opts.AreaStyleOpts(#設(shè)置填充的屬性
                 opacity = 0.5,                  #透明度
                 color="red"                     #填充顏色
         ),)
        .add("后裔", v2,color="blue",
             areastyle_opts = opts.AreaStyleOpts(
                 opacity = 0.5,#透明度
                 color="blue"
         ),)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="英雄成長(zhǎng)對(duì)比"))
    )
    return c
radar_base().render_notebook()
2.7流部、餅圖

部分相較于整體,一個(gè)整體被分成幾個(gè)部分纹坐。這類情況會(huì)用到構(gòu)成型圖表枝冀,如五大產(chǎn)品的收件量占比、公司利潤(rùn)的來源構(gòu)成等耘子。

對(duì)于參與構(gòu)成研究的數(shù)據(jù)不超過9個(gè)時(shí)果漾,可以使用餅圖來繪制,如果超過了建議使用條形圖來展示谷誓。

def pie_base():
    from pyecharts import options as opts
    from pyecharts.charts import Page, Pie
    v1=["啤酒","可樂","雪碧","咖啡","奶茶"]
    v2=[30,19,21,12,18]

    c = (
        Pie()
        .add("", [list(z) for z in zip(v1,v2)])
        .set_global_opts(title_opts=opts.TitleOpts(title="銷售收入占比"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="绒障: {c}%"))#格式化標(biāo)簽輸出內(nèi)容
    )
    return c
pie_base().render_notebook()
2.8、pyecharts繪制散點(diǎn)圖

通過分布&聯(lián)系型圖表能看到數(shù)據(jù)的分布情況捍歪,進(jìn)而找到某些聯(lián)系户辱,如相關(guān)性、異常值和數(shù)據(jù)集群糙臼。

常見使用場(chǎng)景:客戶的分布與哪些因素相關(guān)庐镐、身高與體重的相關(guān)性分析等

查看兩個(gè)變量的關(guān)系使用散點(diǎn)圖,以貸款業(yè)務(wù)為例弓摘,查看年齡與信用的關(guān)系

用戶 年齡 身份特質(zhì) 行為偏好 履約能力 人脈關(guān)系 信用歷史 信用分
小明 32 89 90 88 92 95 771
小花 28 92 80 92 94 87 751
小麗 23 86 78 94 78 86 738
小剛 24 83 81 83 78 94 726
小紅 21 85 87 80 81 85 725

代碼:

def scatter_render():
    from pyecharts.charts import Scatter
    from pyecharts import options as opts
    from pyecharts.commons.utils import JsCode
    import pandas as pd
    df = pd.DataFrame({"年齡":[32,28,23,24,21],
                       "信用分":[771,751,738,726,725],
                       "姓名":['小明','小花','小麗','小剛','小紅']})
    df.sort_values("年齡",inplace=True,ascending=True)# 按年齡對(duì)數(shù)據(jù)做升序排序
    c = (
        Scatter()
        .add_xaxis(df.年齡.values.tolist())
        .add_yaxis(
            "信用分",
            df[["信用分","姓名"]].values.tolist(),#傳入信用分與姓名組合焚鹊,方便js回調(diào)函數(shù)顯示標(biāo)簽
            label_opts=opts.LabelOpts(
                formatter=JsCode(
                    "function(params){return params.value[2];}" #通過定義JavaScript回調(diào)函數(shù)自定義標(biāo)簽
                )
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Scatter-多維度數(shù)據(jù)"),
            xaxis_opts = opts.AxisOpts(
                          type_="value",#x軸數(shù)據(jù)類型是連續(xù)型的
                          min_=20       #x軸范圍最小為20
                          ),
                        yaxis_opts = opts.AxisOpts(
                          min_=700      #y軸范圍最小為700
                          )
        )
    )

    return c

scatter_render().render_notebook()

我們可以看出,信用分與年齡在圖形所顯示范圍內(nèi)大致是成正比的韧献。

2.9末患、繪制組合圖

組合圖就是將兩種不同的圖形繪制到同一圖表中,我們以數(shù)據(jù)分析中常常用到的帕累托圖為例锤窑,展示pyecharts如何繪制組合圖璧针。

帕累托法則又稱為二八法則,即百分之八十的問題是百分之二十的原因造成的渊啰。

帕累托圖(Pareto chart)又叫排列圖探橱、主次圖,是按照發(fā)生頻率大小順序繪制的直方圖绘证,表示有多少結(jié)果是由已確認(rèn)類型或范疇的原因所造成隧膏。

帕累托圖在項(xiàng)目管理中主要用來找出產(chǎn)生大多數(shù)問題的關(guān)鍵原因來解決大多數(shù)問題,是將出現(xiàn)的質(zhì)量問題按照重要程度依次排列的一種圖表嚷那,從而可以直觀地得出影響質(zhì)量問題的主要因素胞枕。

主要特點(diǎn):

1、柱形圖的數(shù)據(jù)按數(shù)值的降序排列魏宽,折線圖上的數(shù)據(jù)有累積百分比數(shù)據(jù)腐泻,并在次坐標(biāo)軸顯示决乎;

2、折線圖的起點(diǎn)數(shù)值為0%派桩,并且位于柱形圖第一個(gè)柱子的最左下角构诚;

3、折線圖的第二個(gè)點(diǎn)位于柱形圖第一個(gè)柱子的最右上角 铆惑;

4范嘱、折線圖最后一個(gè)點(diǎn)數(shù)值為100%,位于整張圖形的最右上角

數(shù)據(jù):

問題數(shù)量(頻數(shù)) 累計(jì)銷量 累計(jì)百分比
0%
產(chǎn)品價(jià)格優(yōu)勢(shì)不突出 115 115 35%
渠道經(jīng)理服務(wù)不到位 99 214 65%
營(yíng)銷活動(dòng)頻次不夠 59 273 83%
區(qū)域消費(fèi)市場(chǎng)不景氣 33 306 93%
其他 23 329 100%

代碼:

def bar_overlap_line():
 from pyecharts import options as opts #引入配置項(xiàng)
 from pyecharts.charts import Bar,Line

?
 x_data1 = ["產(chǎn)品價(jià)格優(yōu)勢(shì)不突出","渠道經(jīng)理服務(wù)不到位",
 "營(yíng)銷活動(dòng)頻次不夠","區(qū)域消費(fèi)市場(chǎng)不景氣","其他"]
 x_data2 = [*range(6)]
 y_data1 = [115,99,59,33,23]
 y_data2 = [0,35,65,83,93,100]
?
 #######################################################################
 bar = Bar()
 #添加x軸數(shù)據(jù)
 bar.add_xaxis(xaxis_data=x_data1)
 bar.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category"))  #設(shè)置x軸系列 
 bar.add_yaxis( "問題數(shù)量(頻數(shù))",                                  #設(shè)置y軸系列名稱
 yaxis_data=y_data1,                     #設(shè)置y軸系列數(shù)據(jù)
 category_gap=0,                         #設(shè)置柱的間距
 color="blue",                        #設(shè)置柱形的填充顏色
 )
?
 bar.extend_axis(
 xaxis=opts.AxisOpts(             #設(shè)置x軸的參數(shù)
 is_show=False,
 position="top",
 ) 
 )

 bar.extend_axis(
 yaxis=opts.AxisOpts(

 axistick_opts=opts.AxisTickOpts(        #刻度
 is_inside=True,
 ),
 axislabel_opts=opts.LabelOpts(formatter="{value}%", #格式化刻度輸出
 position="right")
 )
 ) 
 bar.set_global_opts(
 xaxis_opts=opts.AxisOpts(                 #設(shè)置x軸的參數(shù)
 is_show=True,     #是否顯示坐標(biāo)軸
 ),
 yaxis_opts=opts.AxisOpts(              #設(shè)置y軸最大取值范圍
 max_=320,
 ),
 title_opts=opts.TitleOpts(title="帕累托圖")
 ) 
 ##########################################################################
 line =Line()
 #添加x軸數(shù)據(jù)
 line.add_xaxis(x_data2)
 #添加y軸數(shù)據(jù)
 line.add_yaxis("累計(jì)百分比",
 y_data2,
 xaxis_index=1,                          #使用次x坐標(biāo)軸
 yaxis_index=1,                          #使用次y坐標(biāo)軸
 label_opts=opts.LabelOpts(is_show=False),
 is_smooth=True,
 ) 

 bar.overlap(line)                                  #組合柱狀圖與折線圖
 return bar
bar_overlap_line().render_notebook()

最終效果圖如下所示:


以上就是數(shù)據(jù)分析常用可視化圖表的pyecharts實(shí)現(xiàn)方法鸭津。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彤侍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逆趋,更是在濱河造成了極大的恐慌盏阶,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闻书,死亡現(xiàn)場(chǎng)離奇詭異名斟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)魄眉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門砰盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坑律,你說我怎么就攤上這事岩梳。” “怎么了晃择?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵冀值,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我宫屠,道長(zhǎng)列疗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任浪蹂,我火速辦了婚禮抵栈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坤次。我一直安慰自己古劲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布缰猴。 她就那樣靜靜地躺著绢慢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胰舆,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音蹬挤,去河邊找鬼缚窿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛焰扳,可吹牛的內(nèi)容都是我干的倦零。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼吨悍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扫茅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起育瓜,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤葫隙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后躏仇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恋脚,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年焰手,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糟描。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡书妻,死狀恐怖船响,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躲履,我是刑警寧澤见间,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站崇呵,受9級(jí)特大地震影響缤剧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜域慷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一荒辕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犹褒,春花似錦抵窒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春掉房,著一層夾襖步出監(jiān)牢的瞬間茧跋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工卓囚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘾杭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓哪亿,卻偏偏與公主長(zhǎng)得像粥烁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝇棉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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