日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python之pyecharts使用

系統(tǒng) 1737 0

最近碰巧需要用到pyecharts,但是實(shí)數(shù)門(mén)外漢,完全不懂怎么使用。網(wǎng)上找了一些教程和博客,不是CV大法,就是通篇代碼,既沒(méi)有代碼里的注釋,也沒(méi)有文字解釋。看了半天還是不知道各項(xiàng)屬性是什么意思,怎么使用,到頭來(lái)還要自己慢慢摸索。(以上純屬個(gè)人吐槽,并非貶低所有博主,也沒(méi)有表示我寫(xiě)的就好。只是單純覺(jué)得有一些博文語(yǔ)焉不詳,并沒(méi)有什么實(shí)際意義。同時(shí)告誡自己。)

歡迎交流,噴子勿擾,侵權(quán)刪除。

?

回歸正題

pyecharts有一個(gè)官方API文檔,幾乎包攬了全部?jī)?nèi)容。便于查看。如果有一定的基礎(chǔ),建議直接在API中尋找所需內(nèi)容,不建議去看別人的博客了。畢竟很多東西都是要自己實(shí)踐過(guò)后才能得出答案。

?

官方API文檔

https://pyecharts.org/#/zh-cn/intro

官方文檔是中文的,清晰簡(jiǎn)潔。有目錄欄,方便查看。各項(xiàng)屬性和介紹都有。

安裝

https://pyecharts.org/#/zh-cn/quickstart?id=%e5%a6%82%e4%bd%95%e5%ae%89%e8%a3%85

依舊是官方文檔里有說(shuō)明。

使用

寫(xiě)法

總的來(lái)說(shuō),寫(xiě)法分成4部分

  1. 引用(即import)
  2. 數(shù)據(jù)(即data)
  3. 配置屬性(即option)
  4. 生成文件(即render)

調(diào)用方式有兩種,一種是鏈?zhǔn)秸{(diào)用,一種是單獨(dú)調(diào)用。

官方文檔里其實(shí)還是給出了說(shuō)明,我這里CV過(guò)來(lái)了。

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

# V1 版本開(kāi)始支持鏈?zhǔn)秸{(diào)用
# 你所看到的格式其實(shí)是 `black` 格式化以后的效果
# 可以執(zhí)行 `pip install black` 下載使用
bar = (
    Bar()
    .add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .set_global_opts(title_opts=opts.TitleOpts(title="主標(biāo)題", subtitle="副標(biāo)題"))
    # 或者直接使用字典參數(shù)
    # .set_global_opts(title_opts={"text": "主標(biāo)題", "subtext": "副標(biāo)題"})
)
bar.render()



# 不習(xí)慣鏈?zhǔn)秸{(diào)用的開(kāi)發(fā)者依舊可以單獨(dú)調(diào)用方法
bar = Bar()
bar.add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主標(biāo)題", subtitle="副標(biāo)題"))
bar.render()
            
          

這里可以清楚的看到,兩種寫(xiě)法之間的區(qū)別,怎么寫(xiě)隨你的心意。

Python之pyecharts使用_第1張圖片 各個(gè)配置項(xiàng)

上面這張圖基本反映出了所有需要配置的配置項(xiàng),如果需要設(shè)置相應(yīng)的配置項(xiàng),可以根據(jù)API里的描述,去進(jìn)行設(shè)置。

實(shí)例

這里做一個(gè)全國(guó)地圖的實(shí)例。

展示地圖,并保存為指定的html文件

            
              # encoding: utf-8
'''
# @Author  : ccq
# @File    : demo11.py
# @Time    : 2019/7/29 17:20
'''
from example.commons import Faker
from pyecharts import options as opts  # 導(dǎo)入模塊
from pyecharts.charts import Map  # 導(dǎo)入模塊

customMap = (
    Map()
        .add("商家A",  # 圖例
             [list(z) for z in zip(Faker.provinces, Faker.values())],  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .set_global_opts(  # 設(shè)置全局項(xiàng)
        title_opts=opts.TitleOpts(  # 設(shè)置標(biāo)題項(xiàng)
            title="中國(guó)地圖"  # 設(shè)置標(biāo)題名稱
        )
    )
)
customMap.render("demo11.html")  # 生成名為demo11的本地html文件

            
          

效果展示如下:

Python之pyecharts使用_第2張圖片 中國(guó)地圖

?可以看到標(biāo)題在左上角,圖例在中間最頂上。這似乎有些不符合我們的審美,那接下來(lái)我們把標(biāo)題居中,把圖例放到右下角。

標(biāo)題居中,圖例放到右下角

            
              # encoding: utf-8
'''
# @Author  : ccq
# @File    : demo11.py
# @Time    : 2019/7/29 17:20
'''
from example.commons import Faker
from pyecharts import options as opts  # 導(dǎo)入模塊
from pyecharts.charts import Map  # 導(dǎo)入模塊

customMap = (
    Map()
        .add("商家A",  # 圖例
             [list(z) for z in zip(Faker.provinces, Faker.values())],  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .set_global_opts(  # 設(shè)置全局項(xiàng)
        title_opts=opts.TitleOpts(  # 設(shè)置標(biāo)題配置項(xiàng)
            title="中國(guó)地圖",  # 設(shè)置標(biāo)題名稱
            pos_left="center"  # 設(shè)置標(biāo)題居中
        ),
        legend_opts=opts.LegendOpts(  # 設(shè)置圖例配置項(xiàng)
            pos_right="right",  # 設(shè)置為水平居左
            pos_bottom="bottom"  # 設(shè)置為垂直居下
        )
    )
)
customMap.render("demo11.html")  # 生成名為demo11的本地html文件

            
          

?效果圖展示:

Python之pyecharts使用_第3張圖片 效果展示2

?

?當(dāng)然啦,如果我們的圖上想加上一些視覺(jué)映射配置,例如下面這樣:

Python之pyecharts使用_第4張圖片 展示

?那我需要再增加代碼。

增加視覺(jué)映射配置(分段式)

            
              # encoding: utf-8
'''
# @Author  : ccq
# @File    : demo11.py
# @Time    : 2019/7/29 17:20
'''
from example.commons import Faker
from pyecharts import options as opts  # 導(dǎo)入模塊
from pyecharts.charts import Map  # 導(dǎo)入模塊

customMap = (
    Map()
        .add("商家A",  # 圖例
             [list(z) for z in zip(Faker.provinces, Faker.values())],  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )

        # 設(shè)置系列配置項(xiàng)
        .set_series_opts(
        label_opts=opts.LabelOpts(  # 設(shè)置標(biāo)簽配置項(xiàng)
            is_show=False  # 設(shè)置不顯示Label
        )
    )
        # 設(shè)置全局項(xiàng)
        .set_global_opts(
        title_opts=opts.TitleOpts(  # 設(shè)置標(biāo)題配置項(xiàng)
            title="中國(guó)地圖",  # 設(shè)置標(biāo)題名稱
            pos_left="center"  # 設(shè)置標(biāo)題居中
        ),

        # 設(shè)置圖例配置項(xiàng)
        legend_opts=opts.LegendOpts(
            pos_right="right",  # 設(shè)置為水平居左
            pos_bottom="bottom"  # 設(shè)置為垂直居下
        ),

        # 設(shè)置視覺(jué)映射配置項(xiàng)
        visualmap_opts=opts.VisualMapOpts(
            is_piecewise=True,  # 設(shè)置為分段
            pieces=[  # 自定義分段名稱和顏色
                {"value": "1", "label": "A", "color": "red"},
                {"value": "2", "label": "B", "color": "orange"},
                {"value": "3", "label": "C", "color": "yellow"},
                {"value": "4", "label": "D", "color": "green"},
                {"value": "5", "label": "E", "color": "blue"},
                {"value": "6", "label": "F", "color": "cyan"},
                {"value": "7", "label": "G", "color": "purple"}
            ]
        )
    )
)
customMap.render("demo11.html")  # 生成名為demo11的本地html文件

            
          

效果圖如下

Python之pyecharts使用_第5張圖片 分段式視覺(jué)映射配置效果

?

{"value": "1", "label": "A", "color": "red"},這段代碼是用來(lái)寫(xiě)自定義視覺(jué)映射項(xiàng)的

"value": "1"? :值為1,后面會(huì)提到為什么這樣設(shè)置

"label": "A"? :標(biāo)簽名稱為A

"color": "red"? :顏色為紅色

?

那么接下來(lái)就是配置數(shù)據(jù)和圖例項(xiàng)了

配置數(shù)據(jù)

之前我們使用的是官方提供的數(shù)據(jù),

            
              [list(z) for z in zip(Faker.provinces, Faker.values())]
            
          

這個(gè)是別人提供的,但是我們想用自己的,那么怎么操作呢?

當(dāng)然先自己定義一個(gè)數(shù)據(jù)項(xiàng),然后把這個(gè)換成自己的數(shù)據(jù)項(xiàng)。

            
              mydata1 = [
    ("云南", 1)
]
mydata2 = [
    ("廣東", 2)
]
mydata3 = [
    ("浙江", 3)
]
            
          

這是數(shù)據(jù)項(xiàng)的配置。因?yàn)槲覀兪褂玫膍ap圖,因此,沒(méi)有經(jīng)緯度要填寫(xiě),要寫(xiě)的只是,省份和對(duì)應(yīng)的value值,熟悉嗎?value,剛剛在上面提到的,自定義視覺(jué)映射項(xiàng)時(shí)的value值要和這里的值對(duì)應(yīng)哦。

配置圖例項(xiàng)

            
              .add("圖例1",  # 圖例
             mydata1,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .add("圖例2",  # 圖例
             mydata2,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .add("圖例3",  # 圖例
             mydata3,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
            
          

.add里有3個(gè)參數(shù),第一個(gè)是圖例名稱,第二個(gè)是數(shù)據(jù),第三個(gè)是地圖種類(lèi)。

綜合

            
              # encoding: utf-8
'''
# @Author  : ccq
# @File    : demo11.py
# @Time    : 2019/7/29 17:20
'''
from example.commons import Faker
from pyecharts import options as opts  # 導(dǎo)入模塊
from pyecharts.charts import Map  # 導(dǎo)入模塊

mydata1 = [
    ("云南", 1)
]
mydata2 = [
    ("廣東", 2)
]
mydata3 = [
    ("浙江", 3)
]
customMap = (
    Map()
        .add("圖例1",  # 圖例
             mydata1,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .add("圖例2",  # 圖例
             mydata2,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )
        .add("圖例3",  # 圖例
             mydata3,  # 數(shù)據(jù)項(xiàng)
             "china"  # 地圖
             )

        # 設(shè)置系列配置項(xiàng)
        .set_series_opts(
        label_opts=opts.LabelOpts(  # 設(shè)置標(biāo)簽配置項(xiàng)
            is_show=False  # 設(shè)置不顯示Label
        )
    )
        # 設(shè)置全局項(xiàng)
        .set_global_opts(
        title_opts=opts.TitleOpts(  # 設(shè)置標(biāo)題配置項(xiàng)
            title="中國(guó)地圖",  # 設(shè)置標(biāo)題名稱
            pos_left="center"  # 設(shè)置標(biāo)題居中
        ),

        # 設(shè)置圖例配置項(xiàng)
        legend_opts=opts.LegendOpts(
            pos_right="right",  # 設(shè)置為水平居左
            pos_bottom="bottom"  # 設(shè)置為垂直居下
        ),

        # 設(shè)置視覺(jué)映射配置項(xiàng)
        visualmap_opts=opts.VisualMapOpts(
            is_piecewise=True,  # 設(shè)置為分段
            pieces=[  # 自定義分段名稱和顏色
                {"value": "1", "label": "A", "color": "red"},
                {"value": "2", "label": "B", "color": "orange"},
                {"value": "3", "label": "C", "color": "yellow"},
                {"value": "4", "label": "D", "color": "green"},
                {"value": "5", "label": "E", "color": "blue"},
                {"value": "6", "label": "F", "color": "cyan"},
                {"value": "7", "label": "G", "color": "purple"}
            ]
        )
    )
)
customMap.render("demo11.html")  # 生成名為demo11的本地html文件

            
          

效果圖

Python之pyecharts使用_第6張圖片 最終效果

?

OK,這樣一個(gè)自定義的就完成了!有問(wèn)題歡迎交流!

?

#2019/7/29 21:00更新

使用Geo圖新完成了一個(gè)有大量數(shù)據(jù)的地圖

            
              # encoding: utf-8
'''
# @Author  : ccq
# @File    : demo02.py
# @Time    : 2019/7/29 13:57
'''

from pyecharts import options as opts  # 導(dǎo)入模塊
from pyecharts.charts import Geo  # 導(dǎo)入模塊

# 設(shè)置數(shù)據(jù)
persondata = [('云南', '1'), ('云南', '3'), ('北京', '4'), ('甘肅', '4'), ('廣西', '4'), ('廣西', '3'), ('廣西', '6'),
              ('廣東', '4'), ('廣東', '1'), ('廣東', '2'), ('安徽', '4'), ('貴州', '4'), ('河南', '4'), ('湖北', '5'),
              ('山西', '4'), ('陜西', '4'), ('上海', '4'), ('四川', '4'), ('四川', '5'), ('四川', '3'), ('四川', '6'),
              ('新疆', '3'), ('新疆', '4'), ('浙江', '4'), ('浙江', '5'), ('浙江', '6'), ('云南', '5'), ('云南', '3'),
              ('重慶', '4'), ]
chickendata = [('北京', '4'), ('廣西', '4'), ('廣西', '3'), ('河南', '4'), ('河南', '3'), ('江蘇', '4'), ('江西', '4'),
               ('江西', '5'), ('山東', '4'), ('上海', '4'), ('四川', '4'), ('四川', '5'), ('四川', '3'), ('廣東', '4'), ('廣東', '3'), ]
duckdata = [('北京', '4'), ('山東', '4'), ('浙江', '4'), ('廣東', '4'), ('廣東', '3'), ]
pigdata = [('廣西', '4'), ('廣西', '5'), ('廣東', '4'), ('黑龍江', '4'), ('江西', '4'), ('江西', '5'), ('山東', '4'), ]
seafooddata = [('廣東', '4'), ]
mousedata = [('河南', '4'), ]
cattledata = [('新疆', '3'), ]
sheepdata = [('新疆', '3'), ]
geo = Geo()  # 初始化配置項(xiàng)
geo.add_schema(maptype="china")  # 設(shè)置地圖類(lèi)型
geo.add(#添加圖例
    '鼠',#圖例名稱
    persondata,#數(shù)據(jù)源
    symbol='circle',#圖例形狀

)
geo.add(
    '牛',
    chickendata,
    symbol='rect',
)
geo.add(
    '虎',
    duckdata,
    symbol='roundRect',
)
geo.add(
    '兔',
    pigdata,
    symbol='triangle',
)
geo.add(
    '龍',
    seafooddata,
    symbol='diamond',
)
geo.add(
    '蛇',
    mousedata,
    symbol='pin',
)
geo.add(
    '馬',
    cattledata,
    symbol='arrow',
)
geo.add(
    '羊',
    sheepdata,
    symbol='none',
)
geo.set_global_opts(  # 設(shè)置全局項(xiàng)

    title_opts=opts.TitleOpts(  # 設(shè)置標(biāo)題配置項(xiàng)
        title="中國(guó)地圖",  # 設(shè)置標(biāo)題名稱
        pos_left="center"  # 設(shè)置標(biāo)題距離容器左邊的位置 這里為居中
    ),
    visualmap_opts=opts.VisualMapOpts(  # 設(shè)置視覺(jué)映射配置項(xiàng)
        is_piecewise=True,  # 設(shè)置是否為分段型

        pos_left="left",  # 設(shè)置視覺(jué)映射距離容器左邊的位置 這里為居左
        pos_bottom="bottom",  # 設(shè)置視覺(jué)映射距離容器底部的位置 這里為底部
        orient="vertical",  # 設(shè)置水平('horizontal')或者豎直('vertical')
        pieces=[  # 設(shè)置每段的范圍、文字、顏色
            {"value": "1", "label": "A", "color": "red"},
            {"value": "2", "label": "B", "color": "orange"},
            {"value": "3", "label": "C", "color": "yellow"},
            {"value": "4", "label": "D", "color": "green"},
            {"value": "5", "label": "E", "color": "blue"},
            {"value": "6", "label": "F", "color": "cyan"},
            {"value": "7", "label": "G", "color": "purple"}
        ],

    ),
    legend_opts=opts.LegendOpts(  # 設(shè)置圖例配置項(xiàng)
        pos_right="right",
        pos_top="top",
        orient="vertical",

    ),
)
geo.set_series_opts(
    label_opts=opts.LabelOpts(  # 設(shè)置標(biāo)簽配置項(xiàng)
        is_show=False  # 設(shè)置不顯示Label
    )
)

geo.render("demo03.html")  # 生成名為"demo03"的本地html文件

            
          
Python之pyecharts使用_第7張圖片 Geo效果圖

與Map不同在于:

Map中add的時(shí)候需要添加地圖屬性'china',但是Geo中只需要額外添加一句

geo.add_schema(maptype="china") ?# 設(shè)置地圖類(lèi)型


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 麻城市| 新郑市| 合山市| 遂川县| 湄潭县| 视频| 道真| 前郭尔| 隆德县| 萨迦县| 荆门市| 高安市| 盐源县| 阿拉善盟| 景东| 京山县| 碌曲县| 潢川县| 尚志市| 广西| 张家口市| 田阳县| 吉木乃县| 龙游县| 蒙阴县| 衡阳县| 西乌| 阿荣旗| 吴川市| 汉沽区| 永定县| 思南县| 方城县| 惠安县| 广安市| 特克斯县| 揭西县| 安远县| 彰化市| 开封县| 丰台区|