Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

pythonのmatplotlibでグラフを作成してみた

ちょいちょい見かけるmatplot。便利そうなのでいつか使ってみたいなと思いためしてみました。

実行環境

  • macOS High Sierra Version 10.13.1
  • Python 3.6.3
  • matplotlib 2.1.1

サンプルデータ

この表を、グラフに起こしてみる

コード

import math
from matplotlib import pyplot

# 元データの表をコピペしてlist形式に格納
datas = [
    [1,1.000649,1.000649,1.000649],
    [10,1.000648,1.001081,1.000648],
    [100,1.005793,1.008796,0.997640],
    [1000,1.005395,1.128072,0.961838],
    [10000,1.003097,1.763680,0.706436],
    [100000,1.000356,1.986330,0.364987],
    [1000000,1.000036,2.793968,0.356083],
    [10000000,1.000003,1.874999,0.375001],
]

# xyデータに再マッピング
x = []
y1 = []
y2 = []
y3 = []
for data in datas:
    x.append( math.log(data[0], 10) )
    y1.append(data[1])
    y2.append(data[2])
    y3.append(data[3])


# グラフ内容設定
pyplot.xlim([ x[0], x[len(x)-1] ])
pyplot.xlabel("data cnt(10**n)")
pyplot.ylabel("used memory rate")

pyplot.title('redis decrease used memory test')
pyplot.plot(x, y1, label = "hset")
pyplot.plot(x, y2, label = "json")
pyplot.plot(x, y3, label = "compressed json")
pyplot.legend()

# 表示
pyplot.show()

結果

result.png

感想

  • 思っていた以上に簡単にできてものすごく嬉しい。
  • x軸の値にもとは元データそのまま入れていたけど、X軸のラベルの表示の限界値を超えてしまったようなので、対数(log)に変換して表示した。
  • なお対数値を出す方法を調べるにあたり「対数」という用語が思い出せずそれを調べるのに一番時間をとられた。(最終的に「10を底として」ってgoogleに入力したら出てきた)

参考情報

以下参考にさせていただきました。ありがとうございました。

Qiita - 【Python入門】ライブラリmatplotlibの基本的な使い方
ねこゆきのメモ - 横軸、縦軸を調整する。
matplotlib入門 - グラフの体裁を整える

Why not register and get more from Qiita?
  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
8
Help us understand the problem. What are the problem?