1. 程式人生 > >python3繪圖示例2(基於matplotlib:柱狀圖、分佈圖、三角圖等)

python3繪圖示例2(基於matplotlib:柱狀圖、分佈圖、三角圖等)

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from matplotlib import pyplot as plt
import numpy as np
import pylab

import os,sys,time,math,random

# 圖1-給已有的圖加上刻度
file=r'D:\jmeter\jmeter3.2\data\Oracle資料庫基礎.png'
arr=np.array(file.getdata()).reshape(file.size[1],file.size[0],3)

plt.gray()
plt.imshow(arr)

plt.colorbar()
plt.show()

# 圖2-隨機柱狀圖
SAMPLE_SIZE=100
random.seed()
real_rand_vars=[]

real_rand_vars=[random.random() for val in range(SAMPLE_SIZE)]
pylab.hist(real_rand_vars,10)

pylab.xlabel("number range")
pylab.ylabel("count")
pylab.show()


# 圖3-正太分佈圖
duration=100

# 中值
mean_inc=0.6

# 標準差
std_dev_inc=1.2

x=range(duration)
y=[]
price_today=0

for i in x:
next_delta=random.normalvariate(mean_inc,std_dev_inc)
price_today+=next_delta
y.append(price_today)

pylab.plot(x,y)
pylab.title('test')
pylab.xlabel('time')
pylab.ylabel('value')
pylab.show()


# 圖4
SAMPLE_SIZE=1000
buckes=100

plt.figure()
plt.rcParams.update({'font.size':7})

# 子圖1-隨機分佈 0~1
plt.subplot(621)
plt.xlabel('random1')

res=[random.random() for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖2-均勻分佈
plt.subplot(622)
plt.xlabel('random2')

a=1
b=SAMPLE_SIZE
res=[random.uniform(a,b) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖3-三角形分佈
plt.subplot(623)
plt.xlabel('random3')

low=1
high=SAMPLE_SIZE
res=[random.triangular(a,b) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖4-beta分佈圖
plt.subplot(624)
plt.xlabel('random4')

alpha=1
beta=10
res = [random.betavariate(alpha,beta) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖5-指數分佈圖
plt.subplot(625)
plt.xlabel('random5')
lambd=1.0/((SAMPLE_SIZE+1)/2)

res=[random.expovariate(lambd) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖6-gamma分佈圖
plt.subplot(626)
plt.xlabel('random6')

alpha=1
beta=10
res = [random.gammavariate(alpha,beta) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖7-對數正太分佈圖
plt.subplot(627)
plt.xlabel('random7')

# 中值
mu=1

# 標準差
sigma=0.5

res = [random.lognormvariate(mu,sigma) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖8-正太分佈圖
plt.subplot(628)
plt.xlabel('random8')

# 中值
mu=1

# 標準差
sigma=0.5

res = [random.normalvariate(mu,sigma) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


# 子圖9-帕累託分佈圖
plt.subplot(629)
plt.xlabel('random9')

# 形狀引數
alpha=1

res = [random.paretovariate(alpha) for _ in range(1,SAMPLE_SIZE)]
plt.hist(res,buckes)


plt.tight_layout()
plt.show()