DearPyGuiのプロットにテーマを設定する

# やりたいこと
DearPyGUiでプロットを作成したときにPaddingを設定したかった
（左が未設定、右が設定済み）
<img width=500 alt='padding.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779817/2c962b6d-0d6f-7bf6-fb4d-cf169d12c39b.png'>

どうやるんだろうと探していたらドキュメントのテーマの項に記載がありました。
Padding以外の設定もできるようになったので記載します。

https://dearpygui.readthedocs.io/en/latest/documentation/themes.html#

# 環境
Mac OS
Python 3.10.1

dearpygui 1.3.1
numpy 1.22.1

`pip install dearpygui numpy`

# 詳細
手順は２つだけでした

1. テーマを作成
1. 表示するプロットにテーマを紐付ける


```python
"""
DearPyGui plotのテーマ設定
https://dearpygui.readthedocs.io/en/latest/documentation/themes.html#
"""
import dearpygui.dearpygui as dpg
import numpy as np

# ################# プロットデータ作成 #################
data_len: int = 100
x_data = np.linspace(-np.pi, np.pi, data_len)
sin_data = np.sin(x_data)
cos_data = np.cos(x_data)

# ##################### 描画設定 #####################
dpg.create_context()
dpg.create_viewport(title='Plot view port', width=850, height=550)
dpg.setup_dearpygui()
dpg.show_viewport()

# ##################### テーマ設定 #####################
with dpg.theme() as theme:
    # Plotに有効なテーマ
    with dpg.theme_component(dpg.mvPlot):
        # padding用のテーマ
        dpg.add_theme_style(dpg.mvPlotStyleVar_FitPadding, x=0.2, y=0.2,
                            category=dpg.mvThemeCat_Plots)

# ##################### 画面作成 #####################
with dpg.window(label='Plot window', width=800, height=500):
    with dpg.plot(label='left_plot', width=-1, height=-1) as theme_plt:
        dpg.add_plot_legend(horizontal=True)
        dpg.add_plot_axis(dpg.mvXAxis, label='x', tag='xaxis')
        dpg.add_plot_axis(dpg.mvYAxis, label='y', tag='yaxis')
        dpg.add_line_series(x_data, sin_data, label='sin', parent=dpg.last_item(), tag='line')

# テーマ適用
dpg.bind_item_theme(theme_plt, theme)

dpg.start_dearpygui()
dpg.destroy_context()

```

結果
<img width=400 alt='padding2.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779817/f4fe0167-becf-7b49-9fc1-1ff060cd33f3.png'>

タグを使用しても同じことができます

```python
# ##################### テーマ設定 #####################
with dpg.theme(tag='theme'):
    # Plotに有効なテーマ
    with dpg.theme_component(dpg.mvPlot):
        dpg.add_theme_style(dpg.mvPlotStyleVar_FitPadding, x=0.2, y=0.2,
                            category=dpg.mvThemeCat_Plots)

# ##################### 画面作成 #####################
with dpg.window(label='Plot window', width=800, height=500):
    with dpg.plot(label='left_plot',tag='theme_plt', width=-1, height=-1):
        dpg.add_plot_legend(horizontal=True)
        dpg.add_plot_axis(dpg.mvXAxis, label='x', tag='xaxis')
        dpg.add_plot_axis(dpg.mvYAxis, label='y', tag='yaxis')
        dpg.add_line_series(x_data, sin_data, label='sin', parent=dpg.last_item(), tag='line')

dpg.bind_item_theme('theme_plt', 'theme')

```

グラフに設定できるスタイルと色はこれくらいありそうです。
`dpg.show_tool(dpg.mvTool_Style)`で開けます。（この画面からでもスタイル、色の設定ができます）
<img width=600 alt='tools.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779817/f92e5285-bdaa-08f9-7ddc-2166198b99c7.png'>
<img width=600 alt='color.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779817/44d06a3a-fc34-1ec9-0f07-e7bf2f755cf6.png'>


適当にいじってみる
<img width=600 alt='style_color.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779817/21ae7485-64c9-59a3-11ab-ff2e480d62a6.png'>

```python
with dpg.theme(tag='theme'):
    # Plotに有効なテーマ
    with dpg.theme_component(dpg.mvPlot):
        # Style設定
        dpg.add_theme_style(dpg.mvPlotStyleVar_FitPadding, x=0.2, y=0.2, category=dpg.mvThemeCat_Plots)  # Padding
        dpg.add_theme_style(dpg.mvPlotStyleVar_PlotBorderSize, 2, category=dpg.mvThemeCat_Plots)  # プロットの外枠の太さ？
        dpg.add_theme_style(dpg.mvPlotStyleVar_MinorAlpha, 255, category=dpg.mvThemeCat_Plots)  # 補助線の透明度
        # Color設定
        dpg.add_theme_color(dpg.mvPlotCol_XAxis, [255, 0, 0, 255], category=dpg.mvThemeCat_Plots)  # x軸の色
        dpg.add_theme_color(dpg.mvPlotCol_YAxis, [0, 255, 0, 255], category=dpg.mvThemeCat_Plots)  # y軸の色
```

`add_theme_style`は`x`,`y`引数にxy毎の値を入力すれば大丈夫です。
`dpg.mvPlotStyleVar_MinorAlpha`のようなxyで分けない場合はxに入れると適用できました。


# 参考
[Themes — Dear PyGui documentation](https://dearpygui.readthedocs.io/en/latest/documentation/themes.html#)