python-pptxを使用すると、Pythonを使用してPowerPointを操作することができます。
本記事では、python-pptxを使用した散布図の挿入とマーカーの設定について、詳しくご説明します。
散布図の挿入とマーカーの設定
散布図の挿入
散布図を挿入するため、まずはpptx.enum.chartモジュールから、グラフの種類に応じたクラス(XL_CHART_TYPE)を選ぶ必要があります。
主要なXL_CHART_TYPEクラスは、以下の通りです。
グラフ | XL_CHART_TYPEクラス |
---|---|
棒グラフ | XY_SCATTER |
散布図 | BAR_CLUSTERED |
折れ線グラフ(マーカー無) | LINE |
折れ線グラフ(マーカー有) | LINE_MARKERS |
円グラフ | PIE |
上表より、散布図の挿入には、BAR_CLUSTEREDを指定します。
また、グラフのデータを指定するには、ChartDataオブジェクトを作成する必要があります。
散布図の場合、XyChartDataクラスを指定します。
以下に、上記を指定した散布図の挿入例をご紹介します。
#input
from pptx import Presentation
from pptx.chart.data import XyChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Pt
import numpy as np
prs=Presentation()
sld = prs.slides.add_slide(prs.slide_layouts[5])
sld.shapes[0].text = "散布図"
# XyChartDataオブジェクト作成
val1 = []
val2 = []
# データセット作成
for i in range(20):
val1.append(( i, np.cos(i)-1.5))
val2.append(( i, np.cos(i)+1.5))
# 系列作成
c_data = XyChartData()
s1 = c_data.add_series('y=cos(x)-1.5')
s2 = c_data.add_series('y=cos(x)+1.5')
# 系列とデータセットをリンク
for val in val1:
s1.add_data_point(val[0], val[1])
for val in val2:
s2.add_data_point(val[0], val[1])
left = Pt(50)
top = Pt(150)
width = Pt(600)
height = Pt(300)
# 散布図の挿入
sld.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER, left, top, width, height, c_data)
ch = sld.shapes[1].chart
# 軸の設定
axis = ch.value_axis
axis.has_title = True
axis.axis_title.text_frame.text = "Y"
prs.save("sample024.pptx")
マーカーの設定
Seriesオブジェクトのmarkerプロパティにより、マーカーのスタイルやサイズを設定することができます。
マーカースタイルは、XL_MARKER_STYLEの中から選択することができます。
またmarkerプロパティのformatにより、マーカーの塗りつぶしの色や枠線の色・太さを設定することができます。
以下に、マーカーの設定例をご紹介します。
#input
from pptx import Presentation
from pptx.chart.data import XyChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.enum.chart import XL_MARKER_STYLE
from pptx.dml.color import RGBColor
from pptx.util import Pt
import numpy as np
prs=Presentation()
sld = prs.slides.add_slide(prs.slide_layouts[5])
sld.shapes[0].text = "散布図"
# XyChartDataオブジェクト作成
val1 = []
val2 = []
# データセット作成
for i in range(20):
val1.append(( i, np.cos(i)-1.5))
val2.append(( i, np.cos(i)+1.5))
# 系列作成
c_data = XyChartData()
s1 = c_data.add_series('y=cos(x)-1.5')
s2 = c_data.add_series('y=cos(x)+1.5')
# 系列とデータセットをリンク
for val in val1:
s1.add_data_point(val[0], val[1])
for val in val2:
s2.add_data_point(val[0], val[1])
left = Pt(50)
top = Pt(150)
width = Pt(600)
height = Pt(300)
# 散布図の挿入
sld.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER, left, top, width, height, c_data)
ch = sld.shapes[1].chart
# 軸の設定
axis = ch.value_axis
axis.has_title = True
axis.axis_title.text_frame.text = "Y"
# マーカーの設定
sers = ch.series
# スタイルを「CIRCLE」に設定
sers[0].marker.style = XL_MARKER_STYLE.CIRCLE
# サイズを「15」に設定
sers[0].marker.size = 15
# 塗りつぶしの色を「赤」に設定
sers[0].marker.format.fill.solid()
sers[0].marker.format.fill.fore_color.rgb = RGBColor(255, 0, 0)
# 枠線の太さを「2Pt」に設定
sers[0].marker.format.line.width = Pt(2)
# 枠線の色を「黒」に設定
sers[0].marker.format.line.color.rgb = RGBColor(0, 0, 0)
# スタイルを「DIAMOND」に設定
sers[1].marker.style = XL_MARKER_STYLE.DIAMOND
# サイズを「15」に設定
sers[1].marker.size = 15
# 塗りつぶしの色を「青」に設定
sers[1].marker.format.fill.solid()
sers[1].marker.format.fill.fore_color.rgb = RGBColor(0, 0, 255)
# 枠線の太さを「2Pt」に設定
sers[1].marker.format.line.width = Pt(2)
# 枠線の色を「黒」に設定
sers[1].marker.format.line.color.rgb = RGBColor(0, 0, 0)
prs.save("sample025.pptx")
まとめ
この記事では、python-pptxを使用した散布図の挿入とマーカーの設定について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!