<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這幾個(gè)用 Pyecharts 做出來的交互圖表,領(lǐng)導(dǎo)說叼爆了!

          共 28743字,需瀏覽 58分鐘

           ·

          2020-09-26 20:00

          公眾號(hào)關(guān)注杰哥的IT之旅”,

          選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!


          作者 |?舊時(shí)晚風(fēng)拂曉城?

          編輯?| JackTian
          來源 | 杰哥的IT之旅(ID:Jake_Internet)
          轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信ID:Hc220066)

          一、Pyecharts簡(jiǎn)介和安裝

          1、簡(jiǎn)介

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

          • 簡(jiǎn)潔的 API 設(shè)計(jì),使用如絲滑般流暢,支持鏈?zhǔn)秸{(diào)用

          • 囊括了 30+ 種常見圖表,應(yīng)有盡有

          • 支持主流 Notebook 環(huán)境,Jupyter Notebook 和 JupyterLab

          • 可輕松集成至 Flask,Sanic,Django 等主流 Web 框架

          • 高度靈活的配置項(xiàng),可輕松搭配出精美的圖表

          • 詳細(xì)的文檔和示例,幫助開發(fā)者更快的上手項(xiàng)目

          • 多達(dá) 400+ 地圖文件,并且支持原生百度地圖,為地理數(shù)據(jù)可視化提供強(qiáng)有力的支持

          pyecharts版本v0.5.x 和 v1 間不兼容,v1 是一個(gè)全新的版本,語法也有很大不同。

          2、安裝

          安裝 pyecharts

          pip?install?pyecharts?-i?http://pypi.douban.com/simple?--trusted-host?pypi.douban.com
          import?pyecharts

          print(pyecharts.__version__)?????????#?查看pyecharts版本

          安裝相關(guān)的地圖擴(kuò)展包

          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?echarts-countries-pypkg???????????#?全球國家地圖
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?echarts-china-provinces-pypkg???#?中國省級(jí)地圖
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?echarts-china-cities-pypkg??????#?中國市級(jí)地圖
          pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?echarts-china-counties-pypkg????#?中國縣區(qū)級(jí)地圖

          二、繪制地理圖表

          1、世界地圖—數(shù)據(jù)可視化

          利用 Starbucks.csv 中的數(shù)據(jù),首先計(jì)算每個(gè)國家(Country)對(duì)應(yīng)的門店數(shù)量,然后使用世界地圖表示星巴克門面店在全球的分布。

          import?pandas?as?pd
          from?pyecharts.charts?import?Map
          from?pyecharts?import?options?as?opts
          from?pyecharts.globals?import?ThemeType,?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          #?用pandas讀取csv文件里的數(shù)據(jù)
          df?=?pd.read_csv("Starbucks.csv")['Country']
          data?=?df.value_counts()
          datas?=?[(i,?int(j))?for?i,?j?in?zip(data.index,?data.values)]


          #?實(shí)例化一個(gè)Map對(duì)象
          map_?=?Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
          #?世界地圖
          map_.add("門店數(shù)量",?data_pair=datas,?maptype="world")
          map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))???#?不顯示label
          map_.set_global_opts(
          ?????title_opts=opts.TitleOpts(title="星巴克門店數(shù)量在全球分布",?pos_left='40%',?pos_top='10'),???#?調(diào)整title位置
          ?????legend_opts=opts.LegendOpts(is_show=False),
          ?????visualmap_opts=opts.VisualMapOpts(max_=13608,?min_=1,?is_piecewise=True,
          ?????pieces=[{"max":?9,?"min":?1,?"label":?"1-9",?"color":?"#00FFFF"},????????#?分段??添加圖例注釋和顏色
          ??????????{"max":?99,?"min":?10,?"label":?"10-99",?"color":?"#A52A2A"},
          ??????????{"max":?499,?"min":?100,?"label":?"100-499",?"color":?"#0000FF????"},
          ??????????{"max":?999,?"min":?500,?"label":?"500-999",?"color":?"#FF00FF"},
          ??????????{"max":?2000,?"min":?1000,?"label":?"1000-2000",?"color":?"#228B22"},
          ??????????{"max":?3000,?"min":?2000,?"label":?"2000-3000",?"color":?"#FF0000"},
          ??????????{"max":?20000,?"min":?10000,?"label":?">=10000",?"color":?"#FFD700"}
          ?????????????])
          ?????)

          #?渲染在網(wǎng)頁上???有交互性
          map_.render('星巴克門店在全球的分布.html')

          運(yùn)行效果如下:

          2、國家地圖—數(shù)據(jù)可視化

          漣漪散點(diǎn)圖

          利用china.csv 中的數(shù)據(jù),首先計(jì)算每個(gè)城市(City)對(duì)應(yīng)的門店數(shù)量,然后使用 pyecharts包內(nèi) Geo 模塊繪制星巴克門面店在中國分布的漣漪散點(diǎn)地圖。

          import?pandas?as?pd
          from?pyecharts.globals?import?ThemeType,?CurrentConfig,?GeoType
          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Geo

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          #?pandas讀取csv文件數(shù)據(jù)
          df?=?pd.read_csv("china.csv")['City']
          data?=?df.value_counts()

          datas?=?[(i,?int(j))?for?i,?j?in?zip(data.index,?data.values)]
          print(datas)

          geo?=?Geo(init_opts=opts.InitOpts(width='1000px',?height='600px',?theme=ThemeType.DARK))
          geo.add_schema(maptype='china',?label_opts=opts.LabelOpts(is_show=True))???#?顯示label??省名
          geo.add('門店數(shù)量',?data_pair=datas,?type_=GeoType.EFFECT_SCATTER,?symbol_size=8)
          geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
          geo.set_global_opts(title_opts=opts.TitleOpts(title='星巴克門店在中國的分布'),
          ????????????????????visualmap_opts=opts.VisualMapOpts(max_=550,?is_piecewise=True,
          ????????????????????pieces=[{"max":?50,?"min":?0,?"label":?"0-50",?"color":?"#708090"},????????#?分段??添加圖例注釋??和顏色
          ??????????????????????????????{"max":?100,?"min":?51,?"label":?"51-100",?"color":?"#00FFFF"},
          ??????????????????????????????{"max":?200,?"min":?101,?"label":?"101-200",?"color":?"#00008B"},
          ??????????????????????????????{"max":?300,?"min":?201,?"label":?"201-300",?"color":?"#8B008B"},
          ??????????????????????????????{"max":?600,?"min":?500,?"label":?"500-600",?"color":?"#FF0000"},
          ?????????????????????????????????])
          ????????????????????)

          geo.render("星巴克門店在中國的分布.html")

          運(yùn)行效果如下:

          動(dòng)態(tài)軌跡圖

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Geo
          from?pyecharts.globals?import?ChartType,?SymbolType,?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          #?鏈?zhǔn)秸{(diào)用
          c?=?(
          ????Geo()
          ????.add_schema(
          ????????maptype="china",
          ????????itemstyle_opts=opts.ItemStyleOpts(color="#323c48",?border_color="#111"),
          ????????label_opts=opts.LabelOpts(is_show=True)
          ????)
          ????.add(
          ????????"",
          ????????[("廣州",?55),?("北京",?66),?("杭州",?77),?("重慶",?88),?('成都',?100),?('???,?80)],
          ????????type_=ChartType.EFFECT_SCATTER,
          ????????color="white",
          ????)
          ????.add(
          ????????"",
          ????????[("廣州",?"上海"),?("廣州",?"北京"),?("廣州",?"杭州"),?("廣州",?"重慶"),
          ?????????('成都',?'???),?('???,?'北京'),?('海口',?'重慶'),?('重慶',?'上海')
          ?????????],
          ????????type_=ChartType.LINES,
          ????????effect_opts=opts.EffectOpts(
          ????????????symbol=SymbolType.ARROW,?symbol_size=6,?color="blue"
          ????????),
          ????????linestyle_opts=opts.LineStyleOpts(curve=0.2),
          ????)
          ????.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
          ????.set_global_opts(title_opts=opts.TitleOpts(title="動(dòng)態(tài)軌跡圖"))
          ????.render("geo_lines_background.html")
          )

          運(yùn)行效果如下:

          3、省市地圖—數(shù)據(jù)可視化

          熱力圖

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Geo
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?GeoType,?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          c?=?(
          ????Geo()
          ????.add_schema(maptype="廣東",?label_opts=opts.LabelOpts(is_show=True))
          ????.add(
          ????????"熱力圖",
          ????????[list(z)?for?z?in?zip(Faker.guangdong_city,?Faker.values())],
          ????????type_=GeoType.HEATMAP,
          ????)
          ????.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
          ????.set_global_opts(
          ????????visualmap_opts=opts.VisualMapOpts(),?title_opts=opts.TitleOpts(title="Geo-廣東地圖")
          ????)
          ????.render("geo_guangdong.html")
          )

          運(yùn)行效果如下:

          在地圖上批量添加地址、經(jīng)緯度數(shù)據(jù),地理數(shù)據(jù)可視化

          代碼如下:

          import?pandas?as?pd?????#?導(dǎo)入數(shù)據(jù)分析模塊
          from?pyecharts.charts?import?Geo????#?導(dǎo)入地理信息處理模塊
          from?pyecharts?import?options?as?opts???#?配置
          from?pyecharts.globals?import?GeoType,?CurrentConfig,?ThemeType

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          df?=?pd.read_excel("hotel.xlsx")

          #?獲取?地點(diǎn)??經(jīng)緯度信息
          geo_sight_coord?=?{df.iloc[i]['酒店地址']:?[df.iloc[i]['經(jīng)度'],?df.iloc[i]['緯度']]?for?i?in?range(len(df))}
          data?=?[(df['酒店地址'][j],?f"{int(df['最低價(jià)'][j])}元(最低價(jià))")?for?j?in?range(len(df))]
          #?print(data)
          #?print(geo_sight_coord)

          g?=?Geo(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION,?width="1000px",?height="600px"))
          g.add_schema(maptype="北京")
          for?k,?v?in?list(geo_sight_coord.items()):
          ????#?添加地址、經(jīng)緯度數(shù)據(jù)
          ????g.add_coordinate(k,?v[0],?v[1])

          #?漣漪散點(diǎn)圖
          g.add("",?data_pair=data,?type_=GeoType.EFFECT_SCATTER,?symbol_size=6)
          g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
          g.set_global_opts(title_opts=opts.TitleOpts(title="北京-酒店地址分布"))
          g.render("酒店地址分布.html")

          運(yùn)行效果如下:

          三、柱形圖

          代碼如下:

          from?pyecharts.charts?import?Bar
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?ThemeType,?CurrentConfig
          from?pyecharts?import?options?as?opts


          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          #?鏈?zhǔn)秸{(diào)用
          c?=?(
          ????Bar(
          ????????init_opts=opts.InitOpts(???????????#?初始配置項(xiàng)
          ????????????theme=ThemeType.MACARONS,
          ????????????animation_opts=opts.AnimationOpts(
          ????????????????animation_delay=1000,?animation_easing="cubicOut"???#?初始動(dòng)畫延遲和緩動(dòng)效果
          ????????????))
          ????????)
          ????.add_xaxis(xaxis_data=Faker.choose())??????#?x軸
          ????.add_yaxis(series_name="商家A",?yaxis_data=Faker.values())???????#?y軸
          ????.add_yaxis(series_name="商家B",?yaxis_data=Faker.values())???????#?y軸
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(title='標(biāo)題',?subtitle='副標(biāo)題',???#?標(biāo)題配置和調(diào)整位置
          ??????????????????????????????????title_textstyle_opts=opts.TextStyleOpts(
          ??????????????????????????????????font_family='SimHei',?font_size=25,?font_weight='bold',?color='red',
          ??????????????????????????????????),?pos_left="90%",?pos_top="10",
          ??????????????????????????????????),
          ????????xaxis_opts=opts.AxisOpts(name='x軸名稱',?axislabel_opts=opts.LabelOpts(rotate=45)),??#?設(shè)置x名稱和Label?rotate解決標(biāo)簽名字過長使用
          ????????yaxis_opts=opts.AxisOpts(name='y軸名稱'),

          ????)
          ????.render("bar_001.html")
          )

          運(yùn)行效果如下:

          代碼如下:

          import?pandas?as?pd
          import?collections
          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Bar
          from?pyecharts.globals?import?ThemeType,?CurrentConfig
          import?random

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          df?=?pd.read_excel("hotel.xlsx")
          area?=?list(df['酒店地址'])
          area_list?=?[]
          for?i?in?area:
          ????_index?=?i.find("區(qū)")
          ????#?字符串切片得到行政區(qū)名
          ????i?=?i[:_index?+?1]
          ????area_list.append(i)

          area_count?=?collections.Counter(area_list)
          area_dic?=?dict(area_count)

          #?兩個(gè)列表對(duì)應(yīng)???行政區(qū)??對(duì)應(yīng)的酒店數(shù)量
          area?=?[x?for?x?in?list(area_dic.keys())][0:10]
          nums?=?[y?for?y?in?list(area_dic.values())][:10]

          #?定制風(fēng)格
          bar?=?Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
          colors?=?['red',?'#0000CD',?'#000000',?'#008000',?'#FF1493',?'#FFD700',?'#FF4500',?'#00FA9A',?'#191970',?'#9932CC']
          random.shuffle(colors)
          #?配置y軸數(shù)據(jù)??Baritem
          y?=?[]
          for?i?in?range(10):
          ????y.append(
          ????????opts.BarItem(
          ????????????value=nums[i],
          ????????????itemstyle_opts=opts.ItemStyleOpts(color=colors[i])???#?設(shè)置每根柱子的顏色
          ????????)
          ????)
          bar.add_xaxis(xaxis_data=area)
          bar.add_yaxis("酒店數(shù)量",?yaxis_data=y)
          bar.set_global_opts(xaxis_opts=opts.AxisOpts(
          ????????????????????????????????????name='行政區(qū)',
          ????????????????????????????????????axislabel_opts=opts.LabelOpts(rotate=45)
          ????????????????????????????????????),
          ????????????????????yaxis_opts=opts.AxisOpts(
          ????????????????????????????????????name='酒店數(shù)量',?min_=0,?max_=330,?????#?y軸刻度的最小值?最大值
          ????????????????????),
          ????????????????????title_opts=opts.TitleOpts(
          ????????????????????????title="行政區(qū)-酒店數(shù)量",
          ????????????????????????title_textstyle_opts=opts.TextStyleOpts(
          ????????????????????????????font_family="KaiTi",?font_size=25,?color="black"
          ????????????????????????)
          ????????????????????))
          #?標(biāo)記最大值??最小值??平均值???標(biāo)記平均線
          bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
          ????????????????????markpoint_opts=opts.MarkPointOpts(
          ????????????????????data=[
          ????????????????????????opts.MarkPointItem(type_="max",?name="最大值"),
          ????????????????????????opts.MarkPointItem(type_="min",?name="最小值"),
          ????????????????????????opts.MarkPointItem(type_="average",?name="平均值")]),
          ????????????????????markline_opts=opts.MarkLineOpts(
          ????????????????????data=[
          ????????????????????????opts.MarkLineItem(type_="average",?name="平均值")]))
          bar.render("行政區(qū)酒店數(shù)量最多的Top10.html")

          運(yùn)行效果如下:

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Bar
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?ThemeType,?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          c?=?(
          ????Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
          ????.add_xaxis(xaxis_data=Faker.days_attrs)
          ????.add_yaxis("商家A",?yaxis_data=Faker.days_values)
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(title="Bar-DataZoom(slider+inside)"),
          ????????datazoom_opts=[opts.DataZoomOpts(),?opts.DataZoomOpts(type_="inside")],
          ????)
          ????.render("bar_datazoom_both.html")
          )

          運(yùn)行效果如下:

          四、餅圖

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          c?=?(
          ????Pie()
          ????.add(
          ????????"",
          ????????[list(z)?for?z?in?zip(Faker.choose(),?Faker.values())],
          ????????#?餅圖的中心(圓心)坐標(biāo),數(shù)組的第一項(xiàng)是橫坐標(biāo),第二項(xiàng)是縱坐標(biāo)
          ????????#?默認(rèn)設(shè)置成百分比,設(shè)置成百分比時(shí)第一項(xiàng)是相對(duì)于容器寬度,第二項(xiàng)是相對(duì)于容器高度
          ????????center=["35%",?"50%"],
          ????)
          ????.set_colors(["blue",?"green",?"yellow",?"red",?"pink",?"orange",?"purple"])???#?設(shè)置顏色
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(title="Pie-設(shè)置顏色-調(diào)整圖例位置"),
          ????????legend_opts=opts.LegendOpts(type_="scroll",?pos_left="70%",?orient="vertical"),??#?調(diào)整圖例位置
          ????)
          ????.set_series_opts(label_opts=opts.LabelOpts(formatter=":?{c}"))
          ????.render("pie_set_color.html")
          )

          運(yùn)行效果如下:

          代碼如下:

          import?pyecharts.options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          x_data?=?["深度學(xué)習(xí)",?"數(shù)據(jù)分析",?"Web開發(fā)",?"爬蟲",?"圖像處理"]
          y_data?=?[688,?888,?560,?388,?480]
          data_pair?=?[list(z)?for?z?in?zip(x_data,?y_data)]
          data_pair.sort(key=lambda?x:?x[1])

          c?=?(
          ????#?寬??高??背景顏色
          ????Pie(init_opts=opts.InitOpts(width="1200px",?height="800px",?bg_color="#2c343c"))
          ????.add(
          ????????series_name="學(xué)習(xí)方向",????#?系列名稱
          ????????data_pair=data_pair,??????#?系列數(shù)據(jù)項(xiàng),格式為?[(key1,?value1),?(key2,?value2)]
          ????????rosetype="radius",????????# radius:扇區(qū)圓心角展現(xiàn)數(shù)據(jù)的百分比,半徑展現(xiàn)數(shù)據(jù)的大小
          ????????radius="55%",?????????????#?餅圖的半徑
          ????????center=["50%",?"50%"],????#?餅圖的中心(圓心)坐標(biāo),數(shù)組的第一項(xiàng)是橫坐標(biāo),第二項(xiàng)是縱坐標(biāo)
          ????????label_opts=opts.LabelOpts(is_show=False,?position="center"),???#??標(biāo)簽配置項(xiàng)
          ????)
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(
          ????????????title="Customized?Pie",
          ????????????pos_left="center",
          ????????????pos_top="20",
          ????????????title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
          ????????),
          ????????legend_opts=opts.LegendOpts(is_show=False),
          ????)
          ????.set_series_opts(
          ????????tooltip_opts=opts.TooltipOpts(
          ????????????trigger="item",?formatter="{a}?
          :?{c}?(go7utgvlrp%)"
          ??#?'item':?數(shù)據(jù)項(xiàng)圖形觸發(fā),主要在散點(diǎn)圖,餅圖等無類目軸的圖表中使用
          ?????????),
          ????????label_opts=opts.LabelOpts(color="rgba(255,?255,?255,?0.3)"),
          ????)
          ????.render("customized_pie.html")
          )

          運(yùn)行效果如下:

          五、環(huán)圖

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          c?=?(
          ????Pie()
          ????.add(
          ????????"",
          ????????[list(z)?for?z?in?zip(Faker.choose(),?Faker.values())],
          ????????#?餅圖的半徑,數(shù)組的第一項(xiàng)是內(nèi)半徑,第二項(xiàng)是外半徑
          ????????#?默認(rèn)設(shè)置成百分比,相對(duì)于容器高寬中較小的一項(xiàng)的一半
          ????????radius=["40%",?"60%"],
          ????)
          ????.set_colors(["blue",?"green",?"????#800000",?"red",?"#000000",?"orange",?"purple"])
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(title="Pie-Radius"),
          ????????legend_opts=opts.LegendOpts(orient="vertical",?pos_top="15%",?pos_left="2%"),
          ????)
          ????.set_series_opts(label_opts=opts.LabelOpts(formatter=":?{c}"))
          ????.render("pie_radius.html")
          )

          運(yùn)行效果如下:

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          c?=?(
          ????Pie()
          ????.add(
          ????????"",
          ????????[list(z)?for?z?in?zip(Faker.choose(),?Faker.values())],
          ????????radius=["40%",?"60%"],
          ????????label_opts=opts.LabelOpts(
          ????????????position="outside",
          ????????????formatter="{a|{a}}{abg|}\n{hr|}\n?{b|:?}{c}??{per|go7utgvlrp%}??",
          ????????????background_color="#eee",
          ????????????border_color="#aaa",
          ????????????border_width=1,
          ????????????border_radius=4,
          ????????????rich={
          ????????????????"a":?{"color":?"#999",?"lineHeight":?22,?"align":?"center"},
          ????????????????"abg":?{
          ????????????????????"backgroundColor":?"#e3e3e3",
          ????????????????????"width":?"100%",
          ????????????????????"align":?"right",
          ????????????????????"height":?22,
          ????????????????????"borderRadius":?[4,?4,?0,?0],
          ????????????????},
          ????????????????"hr":?{
          ????????????????????"borderColor":?"#aaa",
          ????????????????????"width":?"100%",
          ????????????????????"borderWidth":?0.5,
          ????????????????????"height":?0,
          ????????????????},
          ????????????????"b":?{"fontSize":?16,?"lineHeight":?33},
          ????????????????"per":?{
          ????????????????????"color":?"#eee",
          ????????????????????"backgroundColor":?"#334455",
          ????????????????????"padding":?[2,?4],
          ????????????????????"borderRadius":?2,
          ????????????????},
          ????????????},
          ????????),
          ????)
          ????.set_global_opts(title_opts=opts.TitleOpts(title="Pie-富文本示例"))
          ????.render("pie_rich_label.html")
          )

          運(yùn)行效果如下:

          六、玫瑰圖

          代碼如下:

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.faker?import?Faker
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          labels?=?['可樂',?'雪碧',?'橙汁',?'奶茶',?'冰啤酒',?'檸檬水']
          values?=?[6,?12,?28,?52,?72,?96]
          v?=?Faker.choose()
          c?=?(
          ????Pie()
          ????.add(
          ????????"",
          ????????[list(z)?for?z?in?zip(v,?Faker.values())],
          ????????radius=["40%",?"75%"],
          ????????center=["22%",?"50%"],
          ????????rosetype="radius",
          ????????label_opts=opts.LabelOpts(is_show=False),
          ????)
          ????.add(
          ????????"",
          ????????[list(z)?for?z?in?zip(labels,?values)],
          ????????radius=["40%",?"75%"],
          ????????center=["70%",?"50%"],
          ????????rosetype="area",
          ????)
          ????.set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰圖示例"),
          ?????????????????????legend_opts=opts.LegendOpts(is_show=False)
          ?????????????????????)
          ????.render("pie_rosetype.html")
          )


          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Pie
          from?pyecharts.globals?import?CurrentConfig
          import?pandas?as?pd

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          provinces?=?['北京','上海','黑龍江','吉林','遼寧','內(nèi)蒙古','新疆','西藏','青海','四川','云南','陜西','重慶',
          ?????????????'貴州','廣西','海南','澳門','湖南','江西','福建','安徽','浙江','江蘇','寧夏','山西','河北','天津']
          num?=?[1,1,1,17,9,22,23,42,35,7,20,21,16,24,16,21,37,12,13,14,13,7,22,8,16,13,13]
          color_series?=?['#FAE927','#E9E416','#C9DA36','#9ECB3C','#6DBC49',
          ????????????????'#37B44E','#3DBA78','#14ADCF','#209AC9','#1E91CA',
          ????????????????'#2C6BA0','#2B55A1','#2D3D8E','#44388E','#6A368B'
          ????????????????'#7D3990','#A63F98','#C31C88','#D52178','#D5225B',
          ????????????????'#D02C2A','#D44C2D','#F57A34','#FA8F2F','#D99D21',
          ????????????????'#CF7B25','#CF7B25','#CF7B25']

          #?創(chuàng)建DataFrame
          df?=?pd.DataFrame({'provinces':?provinces,?'num':?num})
          #?降序排序
          df.sort_values(by='num',?ascending=False,?inplace=True)

          #?提取數(shù)據(jù)
          v?=?df['provinces'].values.tolist()
          d?=?df['num'].values.tolist()
          #?繪制餅圖
          pie1?=?Pie(init_opts=opts.InitOpts(width='1250px',?height='750px'))
          #?設(shè)置顏色
          pie1.set_colors(color_series)

          pie1.add("",?[list(z)?for?z?in?zip(v,?d)],
          ????????radius=["30%",?"100%"],
          ????????center=["50%",?"50%"],
          ????????rosetype="area"
          ????????)
          #?設(shè)置全局配置項(xiàng)
          pie1.set_global_opts(title_opts=opts.TitleOpts(title='多省區(qū)市\(zhòng)n確診病例連續(xù)多日',subtitle='零新增',
          ???????????????????????????????????????????????title_textstyle_opts=opts.TextStyleOpts(font_size=25,color=?'#0085c3'),
          ???????????????????????????????????????????????subtitle_textstyle_opts=?opts.TextStyleOpts(font_size=50,color=?'#003399'),
          ???????????????????????????????????????????????pos_right=?'center',pos_left=?'center',pos_top='42%',pos_bottom='center'
          ??????????????????????????????????????????????),
          ?????????????????????legend_opts=opts.LegendOpts(is_show=False),
          ?????????????????????toolbox_opts=opts.ToolboxOpts())
          #?設(shè)置系列配置項(xiàng)
          pie1.set_series_opts(label_opts=opts.LabelOpts(is_show=True,?position="inside",?font_size=12,
          ???????????????????????????????????????????????formatter=":{c}天",?font_style="italic",
          ???????????????????????????????????????????????font_weight="bold",?font_family="SimHei"
          ???????????????????????????????????????????????),
          ?????????????????????)
          #?渲染在html頁面上
          pie1.render('南丁格爾玫瑰圖示例.html')

          運(yùn)行效果如下:

          七、詞云圖

          詞云就是通過形成關(guān)鍵詞云層或關(guān)鍵詞渲染,過濾掉大量的文本信息,對(duì)網(wǎng)絡(luò)文本中出現(xiàn)頻率較高的關(guān)鍵詞的視覺上的突出。

          import?jieba
          import?collections
          import?re
          from?pyecharts.charts?import?WordCloud
          from?pyecharts.globals?import?SymbolType
          from?pyecharts?import?options?as?opts
          from?pyecharts.globals?import?ThemeType,?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          with?open('barrages.txt')?as?f:
          ????data?=?f.read()

          #?文本預(yù)處理??去除一些無用的字符???只提取出中文出來
          new_data?=?re.findall('[\u4e00-\u9fa5]+',?data,?re.S)??#?只要字符串中的中文
          new_data?=?"?".join(new_data)

          #?文本分詞--精確模式
          seg_list_exact?=?jieba.cut(new_data,?cut_all=False)

          result_list?=?[]
          with?open('stop_words.txt',?encoding='utf-8')?as?f:
          ????con?=?f.readlines()
          ????stop_words?=?set()
          ????for?i?in?con:
          ????????i?=?i.replace("\n",?"")???#?去掉讀取每一行數(shù)據(jù)的\n
          ????????stop_words.add(i)

          for?word?in?seg_list_exact:
          ????#?設(shè)置停用詞并去除單個(gè)詞
          ????if?word?not?in?stop_words?and?len(word)?>?1:
          ????????result_list.append(word)
          print(result_list)

          #?篩選后統(tǒng)計(jì)
          word_counts?=?collections.Counter(result_list)
          #?獲取前100最高頻的詞
          word_counts_top100?=?word_counts.most_common(100)
          #?打印出來看看統(tǒng)計(jì)的詞頻
          print(word_counts_top100)

          #?鏈?zhǔn)秸{(diào)用
          c?=?(
          ????WordCloud(
          ????????init_opts=opts.InitOpts(width='1350px',?height='750px',?theme=ThemeType.MACARONS)
          ????)
          ????.add(
          ????????series_name="詞頻",???????????????#?系列名稱
          ????????data_pair=word_counts_top100,???#?系列數(shù)據(jù)項(xiàng)?[(word1,?count1),?(word2,?count2)]
          ????????word_size_range=[15,?108],??????#?單詞字體大小范圍
          ????????textstyle_opts=opts.TextStyleOpts(?????#?詞云圖文字的配置
          ????????????font_family='KaiTi',
          ????????),
          ????????shape=SymbolType.DIAMOND,??#?詞云圖輪廓,有?'circle',?'cardioid',?'diamond',?'triangle-forward',?'triangle',?'pentagon',?'star'?可選
          ????????pos_left='100',??#?距離左側(cè)的距離
          ????????pos_top='50',????#?距離頂部的距離
          ????)
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(???????????#?標(biāo)題配置項(xiàng)
          ????????????title='彈幕詞云圖',
          ????????????title_textstyle_opts=opts.TextStyleOpts(
          ????????????????font_family='SimHei',
          ????????????????font_size=25,
          ????????????????color='black'
          ????????????),
          ????????????pos_left='500',
          ????????????pos_top='10',
          ????????),
          ????????tooltip_opts=opts.TooltipOpts(???????#?提示框配置項(xiàng)
          ????????????is_show=True,
          ????????????background_color='red',
          ????????????border_color='yellow',
          ????????),
          ????????toolbox_opts=opts.ToolboxOpts(???????#?工具箱配置項(xiàng)
          ????????????is_show=True,
          ????????????orient='vertical',
          ????????)
          ????)
          ????.render('彈幕詞云圖.html')
          )

          運(yùn)行效果如下:

          八、儀表盤

          from?pyecharts.charts?import?Gauge
          from?pyecharts.globals?import?CurrentConfig
          from?pyecharts?import?options?as?opts

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          c?=?(
          ????Gauge()
          ????.add(
          ????????series_name='業(yè)務(wù)指標(biāo)',????????????#?系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。
          ????????data_pair=[['完成率',?88.8]],??????#?系列數(shù)據(jù)項(xiàng),格式為?[(key1,?value1),?(key2,?value2)]
          ????????radius='70%',??????????????????????#?儀表盤半徑,可以是相對(duì)于容器高寬中較小的一項(xiàng)的一半的百分比,也可以是絕對(duì)的數(shù)值。
          ????????axisline_opts=opts.AxisLineOpts(
          ????????????linestyle_opts=opts.LineStyleOpts(??#?坐標(biāo)軸軸線配置項(xiàng)
          ????????????????color=[(0.3,?"#67e0e3"),?(0.7,?"#37a2da"),?(1,?"#fd666d")],
          ????????????????width=30,
          ????????????)
          ????????),
          ????????title_label_opts=opts.LabelOpts(??????????#?輪盤內(nèi)標(biāo)題文本項(xiàng)標(biāo)簽配置項(xiàng)
          ????????????font_size=25,?color='blue',?font_family='KaiTi'
          ????????)
          ????)
          ????.set_global_opts(
          ????????title_opts=opts.TitleOpts(??????????#?標(biāo)題配置項(xiàng)
          ????????????title='儀表盤',
          ????????????title_textstyle_opts=opts.TextStyleOpts(
          ????????????????font_size=25,?font_family='SimHei',
          ????????????????color='black',?font_weight='bold',
          ????????????),
          ????????pos_left="410",?pos_top="8",
          ????????),
          ????????legend_opts=opts.LegendOpts(????????#?圖例配置項(xiàng)
          ????????????is_show=False
          ????????),
          ????????tooltip_opts=opts.TooltipOpts(?????????#?提示框配置項(xiàng)
          ????????????is_show=True,
          ????????????formatter="{a}?
          ?:?{c}%"
          ,
          ????????)
          ????)
          ????.render('gauge.html')
          )

          運(yùn)行效果如下:

          九、水球圖

          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Grid,?Liquid
          from?pyecharts.commons.utils?import?JsCode
          from?pyecharts.globals?import?CurrentConfig,?ThemeType

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          lq_1?=?(
          ????Liquid()
          ????.add(
          ????????series_name='電量',????????#?系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。
          ????????data=[0.25],???????????????#?系列數(shù)據(jù),格式為?[value1,?value2,?....]
          ????????center=['60%',?'50%'],
          ????????#?水球外形,有' circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'?可選。
          ????????#?默認(rèn)?'circle'???也可以為自定義的?SVG?路徑
          ????????shape='circle',
          ????????color=['yellow'],??????????#?波浪顏色???Optional[Sequence[str]]?=?None,
          ????????is_animation=True,?????????#?是否顯示波浪動(dòng)畫
          ????????is_outline_show=False,?????#?是否顯示邊框
          ????)
          ????.set_global_opts(title_opts=opts.TitleOpts(title='多個(gè)Liquid顯示'))
          )

          lq_2?=?(
          ????Liquid()
          ????.add(
          ????????series_name='數(shù)據(jù)精度',
          ????????data=[0.8866],
          ????????center=['25%',?'50%'],
          ????????label_opts=opts.LabelOpts(
          ????????????font_size=50,
          ????????????formatter=JsCode(
          ????????????????"""function?(param)?{
          ????????????????????????return?(Math.floor(param.value?*?10000)?/?100)?+?'%';
          ????????????????????}"""

          ????????????),
          ????????????position='inside'
          ????????)

          ????)
          )

          grid?=?Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add(lq_1,?grid_opts=opts.GridOpts()).add(lq_2,?grid_opts=opts.GridOpts())
          grid.render("multiple_liquid.html")

          運(yùn)行效果如下:

          數(shù)據(jù)獲取

          數(shù)據(jù)來源:http://www.tianqihoubao.com/aqi/chengdu-201901.html

          爬取2019年全年成都空氣質(zhì)量數(shù)據(jù)

          import?pandas?as?pd

          dates?=?pd.date_range('20190101',?'20191201',?freq='MS').strftime('%Y%m')???#?構(gòu)造出日期序列??便于之后構(gòu)造url
          for?i?in?range(len(dates)):
          ????df?=?pd.read_html(f'http://www.tianqihoubao.com/aqi/chengdu-{dates[i]}.html',?encoding='gbk',?header=0)[0]
          ????if?i?==?0:
          ????????df.to_csv('2019年成都空氣質(zhì)量數(shù)據(jù).csv',?mode='a+',?index=False)?????#?追加寫入
          ????????i?+=?1
          ????else:
          ????????df.to_csv('2019年成都空氣質(zhì)量數(shù)據(jù).csv',?mode='a+',?index=False,?header=False)

          查看爬取的數(shù)據(jù)

          十、折線圖

          折線圖是排列在工作表的列或行中的數(shù)據(jù)可以繪制到折線圖中。折線圖可以顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示在相等時(shí)間間隔下數(shù)據(jù)的趨勢(shì)。

          繪制2019年成都AQI指數(shù)走勢(shì)圖

          import?pandas?as?pd
          import?pyecharts.options?as?opts
          from?pyecharts.charts?import?Line
          from?pyecharts.globals?import?CurrentConfig

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          df?=?pd.read_csv('2019年成都空氣質(zhì)量數(shù)據(jù).csv')

          date?=?[x?for?x?in?range(len(df['日期']))]
          value?=?[int(i)?for?i?in?df['AQI指數(shù)']]

          #?繪制折線圖
          line?=?Line()
          line.add_xaxis(xaxis_data=date)
          line.add_yaxis(
          ????"AQI指數(shù)",???????#?系列數(shù)據(jù)項(xiàng)
          ????value,???????????#?y軸數(shù)據(jù)
          ????areastyle_opts=opts.AreaStyleOpts(opacity=0.5,?color='#00FFFF'),??#?設(shè)置圖形透明度??填充顏色
          ????label_opts=opts.LabelOpts(is_show=False),???#?標(biāo)簽配置項(xiàng)
          ????markpoint_opts=opts.MarkPointOpts(??????????#?標(biāo)記點(diǎn)配置項(xiàng)
          ????????data=[
          ????????????????opts.MarkPointItem(type_="max",?name="最大值"),
          ????????????????opts.MarkPointItem(type_="min",?name="最小值"),
          ????????????????opts.MarkPointItem(type_="average",?name="平均值")
          ????????]
          ????),
          ????markline_opts=opts.MarkLineOpts(????????????#?標(biāo)記線配置項(xiàng)
          ????????data=[opts.MarkLineItem(type_="average",?name="平均值")])
          )
          line.set_global_opts(
          ????title_opts=opts.TitleOpts(title='2019成都AQI指數(shù)走勢(shì)圖(按日統(tǒng)計(jì))')
          )
          line.render('2019成都AQI指數(shù)走勢(shì)圖(按日統(tǒng)計(jì)).html')

          運(yùn)行效果如下:

          import?pandas?as?pd
          import?pyecharts.options?as?opts
          from?pyecharts.charts?import?Line
          from?pyecharts.globals?import?CurrentConfig,?ThemeType
          import?math

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
          df?=?pd.read_csv('2019年成都空氣質(zhì)量數(shù)據(jù).csv')[['日期',?'AQI指數(shù)']]
          data?=?df['日期'].str.split('-',?expand=True)[1]
          df['月份']?=?data

          #?按月份分組?聚合?統(tǒng)計(jì)每月AQI指數(shù)平均值
          counts?=?df.groupby('月份').agg({'AQI指數(shù)':?'mean'})

          date?=?[f'{x}月'?for?x?in?range(1,?13)]
          value?=?[math.ceil(i)?for?i?in?counts['AQI指數(shù)']]

          line?=?Line(init_opts=opts.InitOpts(theme=ThemeType.DARK))
          line.set_colors(['red'])
          line.add_xaxis(xaxis_data=date)
          line.add_yaxis(
          ????"AQI指數(shù)均值",????#?系列數(shù)據(jù)項(xiàng)???用于圖例篩選
          ????value,????????????#?y軸數(shù)據(jù)
          ????label_opts=opts.LabelOpts(is_show=False),
          ????markpoint_opts=opts.MarkPointOpts(????#?標(biāo)記點(diǎn)配置項(xiàng)
          ????????data=[
          ????????????????opts.MarkPointItem(type_="max",?name="最大值"),
          ????????????????opts.MarkPointItem(type_="min",?name="最小值"),
          ????????????????opts.MarkPointItem(type_="average",?name="平均值")
          ????????]
          ????),
          ????markline_opts=opts.MarkLineOpts(?????????#?標(biāo)記線配置項(xiàng)
          ????????data=[opts.MarkLineItem(type_="average",?name="平均值")])
          )
          line.set_global_opts(??????#?全局配置項(xiàng)
          ????title_opts=opts.TitleOpts(
          ????????title='2019成都AQI全年走勢(shì)圖(按月統(tǒng)計(jì))',
          ????????pos_left='32%',?pos_top='3%',
          ????????title_textstyle_opts=opts.TextStyleOpts(
          ????????????font_family='SimHei',?font_size=20,?color='#F0FFF0'
          ????????)
          ????),
          ????xaxis_opts=opts.AxisOpts(name='月份'),??????????#?x軸標(biāo)簽
          ????yaxis_opts=opts.AxisOpts(name='AQI指數(shù)均值')????#?y軸標(biāo)簽
          )
          line.render('2019成都AQI指數(shù)走勢(shì)圖(按月統(tǒng)計(jì)).html')

          運(yùn)行效果如下:

          十一、箱形圖

          箱形圖(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數(shù)據(jù)分散情況資料的統(tǒng)計(jì)圖。因形狀如箱子而得名。在各種領(lǐng)域也經(jīng)常被使用,常見于品質(zhì)管理。它主要用于反映原始數(shù)據(jù)分布的特征,還可以進(jìn)行多組數(shù)據(jù)分布特征的比 較。箱線圖的繪制方法是:先找出一組數(shù)據(jù)的上邊緣、下邊緣、中位數(shù)和兩個(gè)四分位數(shù);然后, 連接兩個(gè)四分位數(shù)畫出箱體;再將上邊緣和下邊緣與箱體相連接,中位數(shù)在箱體中間。

          import?pandas?as?pd
          from?pyecharts?import?options?as?opts
          from?pyecharts.charts?import?Boxplot
          from?pyecharts.globals?import?CurrentConfig,?ThemeType

          CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'

          df?=?pd.read_csv('2019年成都空氣質(zhì)量數(shù)據(jù).csv')[['日期',?'AQI指數(shù)']]
          df.sort_values(by='AQI指數(shù)',?inplace=True)?????#?按AQI指數(shù)大小排序?升序
          data?=?df['日期'].str.split('-',?expand=True)[1]
          df['月份']?=?data
          item1,?item2,?item3,?item4?=?[],?[],?[],?[]

          #?分為4個(gè)季度
          for?i,?j?in?zip(df['月份'],?df['AQI指數(shù)']):
          ????if?i?in?['01',?'02',?'03']:
          ????????item1.append(j)
          ????elif?i?in?['04',?'05',?'06']:
          ????????item2.append(j)
          ????elif?i?in?['07',?'08',?'09']:
          ????????item3.append(j)
          ????elif?i?in?['10',?'11',?'12']:
          ????????item4.append(j)

          x_data?=?[f'第{i}季度'?for?i?in?range(1,?5)]
          y_data?=?[item1,?item2,?item3,?item4]
          boxplot?=?Boxplot(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
          boxplot.set_colors(['red'])
          boxplot.add_xaxis(xaxis_data=x_data)
          boxplot.add_yaxis(series_name='',?y_axis=boxplot.prepare_data(y_data))
          boxplot.set_global_opts(
          ????title_opts=opts.TitleOpts(
          ????????title='2019年成都季度AQI指數(shù)箱型圖',
          ????????pos_left='300',?pos_top='5',
          ????????title_textstyle_opts=opts.TextStyleOpts(
          ????????????font_family='KaiTi',?font_size=20,?color='black'
          ????????)
          ????),
          ????xaxis_opts=opts.AxisOpts(name='季度'),
          ????yaxis_opts=opts.AxisOpts(name='AQI指數(shù)')
          )
          boxplot.render('2019年成都季度AQI指數(shù)箱型圖.html')

          運(yùn)行效果如下:



          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼内射导航 | 亚洲初撮六十路老熟女 | 成人日批视频 | 自拍偷拍五月婷婷 | 天堂无码视频 |