nishiyamasuの日記

忘れやすいので、メモ。。。

(Python)matplotlibで基本的なグラフをもっと描く

こちらに関連した記事になります。

nishiyamasu.hatenablog.com

今回も、いろんなサンプルを列挙していきます(笑)

 y = x^{2}

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(-1*n, n, 0.1)
y = x * x

plt.plot(x, y)
plt.grid()
plt.savefig("parabola1.png")
plt.show()

f:id:nishiyamasu:20220128232034p:plain
parabola1

 y = x^{3}-7x^{2}+5x+1

import matplotlib.pyplot as plt
import numpy as np

n = 4
x = np.arange(-1*n, n, 0.1)
y = x**3 - 7 * x**2 + 5 * x + 1

plt.plot(x, y)
plt.grid()
plt.savefig("parabola1.png")
plt.show()

f:id:nishiyamasu:20220128232944p:plain
cubic_function

 y = 2^{x}  - 10

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(-1*n, n, 0.1)
y = 2**x - 10

plt.plot(x, y)
plt.grid()
plt.savefig("2_x.png")
plt.show()

f:id:nishiyamasu:20220128233352p:plain
2_x

 y = \sqrt{x}

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(0, n, 0.1)
y = np.sqrt(x)

plt.plot(x, y)
plt.grid()
plt.savefig("sqrt.png")
plt.show()

f:id:nishiyamasu:20220128233700p:plain
sqrt

(Python)matplotlibで基本的なグラフを描く

Pythonのmatplotlibを使って簡単な数式のグラフを描いてみましょう。

最初に、pipなどを使って関連ライブラリをインストールしておきましょう

  • numpy
  • matplotlib

(matplotlibをインストールすると、numpyも自動でインストールします)

以下に、数式のグラフを描くためのコードと画像を列挙していきます。

 y = x

import numpy as np
import matplotlib.pyplot as plt

n = 10
x = np.arange(0, n, 0.1)
y = x

plt.plot(x, y)
plt.grid()
plt.savefig("line.png")
plt.show()

f:id:nishiyamasu:20220128225822p:plain
line.png

 y = sin(x)

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(0, n, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.grid()
plt.savefig("sin.png")
plt.show()

f:id:nishiyamasu:20220128230123p:plain
sin.png

 y = cos(x)

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(0, n, 0.1)
y = np.cos(x)

plt.plot(x, y)
plt.grid()
plt.savefig("cos.png")
plt.show()

f:id:nishiyamasu:20220128230203p:plain
cos.png

 y = tan(x)

import matplotlib.pyplot as plt
import numpy as np

n = 10
x = np.arange(0, n, 0.1)
y = np.tan(x)

plt.plot(x, y)
plt.grid()
plt.savefig("tan.png")
plt.show()

f:id:nishiyamasu:20220128230243p:plain
tan.png

(Python)print文で文字を波形に出力する

類似した記事

nishiyamasu.hatenablog.com

nishiyamasu.hatenablog.com

今回は三角関数(sin, cos)を利用します。若干数学の知識を使いますが、そこまで難しくはないのでご安心を。

コード

from math import cos, floor

for i in range(200):
    x = i / 10
    y = cos(x)+1
    print("a" * floor(30*y))

出力

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaa
aaaaaaa
aaaaa
aaaa
aa
a






a
aaa
aaaa
aaaaaa
aaaaaaaa
aaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaa
aaaaaaa
aaaaa
aaaa
aa
a





a
aa
aaa
aaaa
aaaaaa
aaaaaaaa
aaaaaaaaaa
aaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
aaaaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaa

(Python)print文で、放物線に沿って文字を出力する。

放物線に沿って文字を出力するというのは、ただ単にy = x2に沿ってaを出力するだけです(笑)

コード

for i in range(1, 10, 1):
    print("a" * (i*i))

出力

a
aaaa
aaaaaaaaa
aaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

もう少し出力を伸ばしてみましょう。

コード

for i in range(1, 10, 1):
    print("a" * (i*i))
for i in range(9, 0, -1):
    print("a" * (i*i))

結果

a
aaaa
aaaaaaaaa
aaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
aaaaaaaaa
aaaa
a

(Python)print文で文字を何個かおきに出力する

文字を何個かおきに出力するというのは、以下のようなイメージです。

a  a  a  a  a  a

割り算(と余り)を利用してみましょう。 以下のコードではforループを使い、i番目の時に、iが3で割り切れるときには"a"、割り切れないときは" "を出力します。 終端を分かりやすくするために、"<-"を最後に出力しています。

コード

for i in range(20):
    if i % 3 == 0:
        print("a", end="")
    else:
        print(" ", end="")
print("<-")

出力

a  a  a  a  a  a  a <-

関数化して、割る数を変更できるようにしてみましょう。

def print_step(n):
    for i in range(20):
        if i % n == 0:
            print("a", end="")
        else:
            print(" ", end="")
    print("<-")


print_step(2)
print_step(3)
print_step(5)
print_step(8)

出力

a a a a a a a a a a <-
a  a  a  a  a  a  a <-
a    a    a    a    <-
a       a       a   <-

こういう遊びもたまにはいいんでない?笑

(Python)print分で文字を階段状に出力する2

前回の記事の続きです。

nishiyamasu.hatenablog.com

前回の階段を伸ばして、階段の段数が減るように出力していきます。 またまたお遊びです。

コード

for i in range(10):
    print(" " * i + "a")
for i in range(10):
    print(" " * (9-i) + "a")

出力

a
 a
  a
   a
    a
     a
      a
       a
        a
         a
         a
        a
       a
      a
     a
    a
   a
  a
 a
a

for文とprintだけでこんな風に遊んでみるのも、どうでしょうか?(笑)

(Python)print文で文字を階段状に出力する

文字を階段状に出力するというのは以下のイメージです。

a
 a
  a
   a
    a
     a
      a
       a
        a
         a

print分で文字を出力できるのはご存知だと思いますが、そこに少し遊びを加えてみようという目的です。 「a」の前の空白はスペースを出力すればよいので、1行の中に、「スペース(複数)+”a”」を出力しましょう。

for文を使いながら実装してみましょう。print分は引数のendを””にすることで改行をスキップできます。

コード

for i in range(10):
    for i in range(i):
        print(" ", end="")
    print("a")

出力

a
 a
  a
   a
    a
     a
      a
       a
        a
         a

また、以下のようなコードでも同じような出力になります。

for i in range(10):
    print(" " * i + "a")