logo
Published on

pyechartsを使ってみた。

Authors

pyecharts

  • ApacheECharts のラッパー

    • ApacheECharts の Example はかなり豊富(pyecharts もそれなりにある。)

      echarts sample
  • Github

  • Docは中国語と英語

いいところ

  • 表現がすごい豊か(中国語なのは、サンプルが中国語なため)

    • 棒グラフ bar

      from pyecharts import Bar
      
      attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
      v1 = [5, 20, 36, 10, 75, 90]
      v2 = [10, 25, 8, 60, 20, 80]
      bar = Bar("柱状图数据堆叠示例")
      bar.add("商家A", attr, v1, is_stack=True)
      bar.add("商家B", attr, v2, is_stack=True)
      bar.render()
      
    • カレンダーヒートマップ calendarheatmap

      import datetime
      import random
      from pyecharts import HeatMap
      
      begin = datetime.date(2017, 1, 1)
      end = datetime.date(2017, 12, 31)
      data = [
          [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
          for i in range((end - begin).days + 1)
      ]
      heatmap = HeatMap("日历热力图示例", "某人 2017 年微信步数情况", width=1100)
      heatmap.add(
          "",
          data,
          is_calendar_heatmap=True,
          visual_text_color="#000",
          visual_range_text=["", ""],
          visual_range=[1000, 25000],
          calendar_cell_size=["auto", 30],
          is_visualmap=True,
          calendar_date_range="2017",
          visual_orient="horizontal",
          visual_pos="center",
          visual_top="80%",
          is_piecewise=True,
      )
      heatmap.render()
      

微妙だなと思うところ

  • 結構ソースコードが長くなりがち。(plotly の Bar だとこれくらい。)

  • pandas のデータフレームと親和性があまりない。(リストに直さないといけない・・・)

    • pyecharts

      • データをリストにして、メソッドで x,y を追加していく。

        from pyecharts import Bar
        
        attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
        v1 = [5, 20, 36, 10, 75, 90]
        v2 = [10, 25, 8, 60, 20, 80]
        bar = Bar("柱状图数据堆叠示例")
        bar.add("商家A", attr, v1, is_stack=True)
        bar.add("商家B", attr, v2, is_stack=True)
        bar.render()
        
    • plotly

      • データフレームを指定して、カラム名を x,y にいれるだけ。簡単!
        long_df = px.data.medals_long()
        fig = px.bar(long_df, x="nation", y="count", color="medal")
        fig.show()
        

まとめ

  • データ分析みたいにトライアンドエラーが発生しないならとてもよい。
  • トライアンドエラーが発生するなら、ちょっと面倒かもしれない。