Help us understand the problem. What is going on with this article?

xlwings chart_type一覧

xlwingsでのグラフ作成

こんにちは、Cremokoroahです。
xlwingsでGraphを作成する際、散布図を作成したかったのに"Scatter"と指定しても散布図にならなかったので、chart_type(グラフの種類)の共有をしたいと思います。

※xlwingsのバージョンは0.15.1です

とりあえず、Jupyterで以下を実行すると画像のようにExcelのセルに乱数とグラフが作成されます。

コードは公式の例を参考にしております。
https://docs.xlwings.org/en/stable/api.html

import xlwings as xw
import numpy as np

sht = xw.Book().sheets[0]
rand_num = np.random.randn(15, 2)
sht.range('A1').value = rand_num
chart = sht.charts.add()
chart.set_source_data(sht.range('A1').expand())

スクリーンショット 2019-03-09 16.10.32.png

グラフの種類を指定したい

先ほど添付した公式のコードを眺めると、どうやらグラフの種類を指定できるようです。Jupyterで以下のコードを実行してみます。

chart.chart_type = 'line'

すると、折れ線グラフになると思います。
スクリーンショット 2019-03-09 16.46.45.png

ですが、私がしたいことは散布図です。
ためしに、

chart.chart_type = 'Scatter'

とやってみました。
折れ線がlineならScatterいけるだろと思うとKey errorが返されました。

エラーを確認すると、
/anaconda3/lib/python3.6/site-packages/xlwings/xlmac.py(Windowsならxlwin.pyだったと思う)にはscatterなんてありません的なことを言われましたので、思い切ってxlmac.pyの中身を開いて、コマンドFで検索したところchart_typeの一覧がありました。散布図は'xy_scatter'とのことです。
公式で一覧を書いてくれてもいいと思うのに...

結果

散布図になってくれました!!
スクリーンショット 2019-03-09 17.04.26.png

とりあえず一覧を貼っておきます。

'3d_area': -4098,
'3d_area_stacked': 78,
'3d_area_stacked_100': 79,
'3d_bar_clustered': 60,
'3d_bar_stacked': 61,
'3d_bar_stacked_100': 62,
'3d_column': -4100,
'3d_column_clustered': 54,
'3d_column_stacked': 55,
'3d_column_stacked_100': 56,
'3d_line': -4101,
'3d_pie': -4102,
'3d_pie_exploded': 70,

'area': 1,
'area_stacked': 76,
'area_stacked_100': 77,

'bar_clustered': 57,
'bar_of_pie': 71,
'bar_stacked': 58,
'bar_stacked_100': 59,

'bubble': 15,
'bubble_3d_effect': 87,

'column_clustered': 51,
'column_stacked': 52,
'column_stacked_100': 53,

'cone_bar_clustered': 102,
'cone_bar_stacked': 103,
'cone_bar_stacked_100': 104,
'cone_col': 105,
'cone_col_clustered': 99,
'cone_col_stacked': 100,
'cone_col_stacked_100': 101,

'cylinder_bar_clustered': 95,
'cylinder_bar_stacked': 96,
'cylinder_bar_stacked_100': 97,
'cylinder_col': 98,
'cylinder_col_clustered': 92,
'cylinder_col_stacked': 93,
'cylinder_col_stacked_100': 94,

'doughnut': -4120,
'doughnut_exploded': 80,

'line': 4,
'line_markers': 65,
'line_markers_stacked': 66,
'line_markers_stacked_100': 67,
'line_stacked': 63,
'line_stacked_100': 64,

'pie': 5,
'pie_exploded': 69,
'pie_of_pie': 68,

'pyramid_bar_clustered': 109,
'pyramid_bar_stacked': 110,
'pyramid_bar_stacked_100': 111,
'pyramid_col': 112,
'pyramid_col_clustered': 106,
'pyramid_col_stacked': 107,
'pyramid_col_stacked_100': 108,

'radar': -4151,
'radar_filled': 82,
'radar_markers': 81,

'stock_hlc': 88,
'stock_ohlc': 89,
'stock_vhlc': 90,
'stock_vohlc': 91,

'surface': 83,
'surface_top_view': 85,
'surface_top_view_wireframe': 86,
'surface_wireframe': 84,

'xy_scatter': -4169,
'xy_scatter_lines': 74,
'xy_scatter_lines_no_markers': 75,
'xy_scatter_smooth': 72,
'xy_scatter_smooth_no_markers': 73

数字の意味は私にはよくわかりませんがこれが一覧みたいです。

最後に

私は機械設計エンジニアなのですが、社内で使用しているマクロに不満がありました。今更VBAは覚えたくないので色々調べたところ、なんとPythonにはxlwingsなるものがあることを最近知ったので共有させていただきました。

おそらく、私と同じように不満がありつつも既存のマクロを使用しているノンプログラマの方は多いと思います。今からVBAを覚えるのも悪くないと思いますが、どうせなら汎用性の高いプログラミング言語であるPythonを覚えつつ、業務効率化を狙ってみるのはいかがでしょうか??

今後、育児の合間をぬってノンプログラマ向けのxlwings記事を投稿していく予定です。

よろしくお願いします。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away