HOME/Articles/

matplotlib example seitaipen (snippet)

Article Outline

Python matplotlib example 'seitaipen'

Functions in program:

  • def plot1data(data):
  • def plot3data(data1, data2, data3):
  • def calc_integral(T):
  • def openfile(filename):

Modules used in program:

  • import matplotlib
  • import matplotlib.pyplot as plt
  • import math

python seitaipen

Python matplotlib example: seitaipen

# python を用いて9つのデータを一気に処理するプログラム

# 実行すると,L2ノルムでの積分の値が次々に表示され,

# 最後に図が表示される。

# ところどころコメントアウトを外すとグラフが保存されたりいろいろする。

import math

import matplotlib.pyplot as plt

import matplotlib

# ubuntu(グラフに日本語を表示させたい!)

# from matplotlib.font_manager import FontProperties

# sfont_path = '/usr/share/fonts/truetype/takao-gothic/TakaoExGothic.ttf' # 適宜インストールされているフォントを選ぶ

# font_prop = FontProperties(fname=font_path)

# matplotlib.rcParams['font.family'] = font_prop.get_name()

# mac(グラフに日本語を表示させたい!)

font = {'family':'YuGothic'} # 適宜インストールされているフォントを選ぶ

matplotlib.rc('font',**font)

def openfile(filename):

  T = []

  with open(filename, "r") as f:

    for line in f:

      T.append(line[:-2].split(' ')[:-1])

  return T[1:]

def calc_integral(T):

  integral = 0

  n = len(data)

  for i in range(0,n):

    integral += float(data[i][1]) ** 2

  return math.sqrt(integral)

def plot3data(data1, data2, data3):

  plt.figure()

  name = [1, 2, 3]

  hardnesslist = ['HB', '2B', '6B']

  plt.plot(name, data1[1:], label = data1[0])

  plt.plot(name, data2[1:], label = data2[0])

  plt.plot(name, data3[1:], label = data3[0]) 

  title = 'hoge' # プロットの中に表示されるタイトル(例:積分値) 

  plt.title(title)

  plt.legend()

  plt.xticks(name, hardnesslist)

  plt.xlabel('x')

  plt.ylabel('y')

  figtitle = 'hogehoge' # 保存するファイルの名前(例:dataplot.png)

#   plt.savefig(figtitle) # figtitleに入れた名前でプロット画像を保存

  plt.show()


def plot1data(data):

  plt.figure()

  plt.scatter(hardnesslist, data1[1:], label = data1[0])

  title = 'hoge'

  plt.title(title)

  plt.legend()

  plt.xlabel('x')

  plt.ylabel('y')

  figtitle = 'hogehoge'

#   plt.savefig(figtitle) # figtitleに入れた名前でプロット画像を保存

  plt.show()

namelist = ['m', 'n', 'u']

hardnesslist = ['hb', '2b', '6b']

plotdata = []

subplotdata = []

for name in namelist:

  for hardness in hardnesslist:

    integral = 0

    for i in range(1,4):

      filetitle = name + name + "-" + hardness + "-" + str(i) + ".dat"

      data = openfile(filetitle)

      integral += calc_integral(data)

    print(name, hardness, integral/3) # 試しに出力

    subplotdata.append(integral/3)

for i in range(0,3):

  A = [namelist[i]]

  for j in range(0,3):

    A.append(subplotdata[3*i+j])

  plotdata.append(A)

plot3data(plotdata[0], plotdata[1], plotdata[2])

### おまけ ###

# texファイル用の表を作成

# table_tex = ""

# for i in range(0,3):

#   for j in range(0,4):

#     if j == 0: table_tex += str(plotdata[i][j])

#     if j != 0: table_tex += " & " + str(round(plotdata[i][j], 3)) # 後ろの3は四捨五入する桁数

#   table_tex += " \\\\"

#   if i == 2: table_tex += " \\hline"

#   if i != 2: table_tex += '\n'

# print(table_tex)

メッセージ入力