1173-杨同学

# 基本图形

## 散点图

import numpy as np
import matplotlib.pyplot as plt
height=[161,170,182,175,173,165]
weight=[50,58,80,70,69,55]
plt.scatter(height,weight)
plt.show()
N=1000
x=np.random.randn(N)
y1=np.random.randn(len(x))
plt.scatter(x,y1)
plt.show()
y2=x+np.random.randn(len(x))*0.1
plt.scatter(x,y2)
y3=-1*x+np.random.randn(len(x))*0.1
plt.scatter(x,y3)
N = 1000
x = np.random.rand(N)
y = np.random.rand(N)
change=close-open
yesterday=change[:-1]
today=change[1:]
plt.scatter(today,yesterday)
plt.show()
s=200
marker='v'
c='green'
alpha=1
plt.scatter(x, y1, s=50, marker='o', c='red', alpha=0.5)
plt.show()
change=close-open
yesterday=change[:-1]
today=change[1:]
plt.scatter(yesterday,today,s=500,c='r',alpha=1)

plt.show()

## 折线图

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
x=np.linspace(-10,10,100)
y=x**2
plt.plot(x,y)
plt.show()
converters={0:mdates.strpdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)

plt.plot_date(date,close,'y-')

plt.show()

plt.plot_date(date,close,'go')

plt.plot_date(date,close,'r--')

plt.show()

plt.plot(date, close, color='green', linestyle='dashed', marker='o',
markerfacecolor='blue', markersize=12)

plt.show()

## 条形图

import numpy as np
import matplotlib.pyplot as plt
N=5
y=[20,10,30,25,15]
index = np.arange(N)
p1 = plt.bar(x=index, height=y,width=0.5,bottom=100,color='red')
plt.show()
#水平的
p2 = plt.bar(x=0, bottom=index, width=y,height=0.5,orientation='horizontal')
plt.show()
#默认画水平的图
p3=plt.barh(bottom=index,width=y,height=0.5)

plt.show()

index=np.arange(4)

sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]

bar_width=0.3
#并列条形图
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index+bar_width,sales_SH,bar_width,color='r')
plt.show()
#层叠图
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index,sales_SH,bar_width,color='r',bottom=sales_BJ)
plt.show()

## 直方图

import numpy as np
import matplotlib.pyplot as plt
mu = 100  # mean of distribution
sigma = 20  # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)
plt.hist(x, bins=10,color='red',normed=True)#normed 是否标准化
plt.hist(x, bins=50,color='green',normed=False)
plt.show()
#双变量的直方图
x = np.random.randn(1000)+2
y = np.random.randn(1000)+3
plt.hist2d(x, y, bins=40)
plt.show()

## 饼状图

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

# Some data

labels = 'A', 'B', 'C', 'D'
fracs = [15, 30, 45, 10]

explode = (0, 0.05, 0, 0)

# Make square figures and axes

plt.axes(aspect=1)
#离圆的中心
explode = (0, 0.05, 0, 0)
plt.show()

## 箱形图

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(100)
data = np.random.normal(size=1000, loc=0.0, scale=1.0)
plt.boxplot(data,sym='o',whis=1.5)#sym 异常的点的形状 whis 虚线的长度
plt.show()
data = np.random.normal(size=(100, 4), loc=0.0, scale=1.0)
labels = ['A','B','C','D']
plt.boxplot(data, labels=labels)
plt.show()

# 颜色和样式

## 颜色

1.八种内建默认颜色缩写
b:blue
g:green
r:red
c:cyan 青色
m:magenta 紫色
y:yellow
k:black
w:white
2.其他颜色表示方法：

html十六进制
RGB元组

#调整颜色
y=np.arange(1,5)
plt.plot(y,'y');
plt.plot(y+1,color=(0.1,0.2,0.3));
plt.plot(y+2,'#FF00FF');
plt.plot(y+3,color='0.5')#灰度

plt.show()

## 点，线的样式

#线型

y=np.arange(1,5)
plt.plot(y,'--');
plt.plot(y+1,'-.');
plt.plot(y+2,':');

plt.show()
'''
#点形状
'''
y=np.arange(1,5)
plt.plot(y,'o');
plt.plot(y+1,'D');
plt.plot(y+2,'^');
plt.plot(y+3,'s');
plt.plot(y+4,'p');
plt.plot(y+5,'x');

plt.show()

## 样式字符串

cx–
mo:
kp:

y=np.arange(1,5)
plt.plot(y,'cx--');
plt.plot(y+1,'kp:');
plt.plot(y+2,'mo-.');

plt.show()

# 面向对象VS Matlab Sytle

pyplot ：经典高层封装，到目前为止，我们所用的都是pyplot
pylab： 将Matplotlib 和 NumPy 合并的模块，模拟Matlab的编程环境

pyplot ：简单易用。交互使用时方便，可以根据命令实时作图。但底层定制能力不足。
pylab： 完全封装，环境最接近Matlab。不推荐使用。

import matplotlib.pyplot as plt
import numpy as np

#pyplot
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
plt.plot(x,y)
plt.title('pyplot')
plt.show()

#pylab
from pylab import *
x=arange(0,10,1)
y=randn(len(x))
plot(x,y)
title('random numbers')
show()

#Object Oriented
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
l,=plt.plot(x,y)
t=ax.set_title('object oriented')
plt.show()

## 子图

FigureCanvas
Figure
Axes

### 实例

fig=plt.figure()
Figure实例

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(1,100)

plt.subplot(221)
plt.plot(x,x)

plt.subplot(222)
plt.plot(x,-x)

plt.subplot(223)
plt.plot(x,x*x)

plt.subplot(224)
plt.plot(x,np.log(x))

plt.show()

## 多图

import matplotlib.pyplot as plt

fig1=plt.figure()

ax1.plot([1,2,3],[3,2,1])

fig2=plt.figure()

ax2.plot([1,2,3],[1,2,3])

plt.show()

## 网格

import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)
plt.plot(y,y*2)
plt.grid(True)
plt.show()

#交互中打开关闭网格
plt.grid()
import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)
plt.plot(y,y*2)
plt.grid(True,color='g',linestyle='-',linewidth='2')
plt.show()

#Object Oriented
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
l,=plt.plot(x,y)
ax.grid(color='g')
plt.show()

## 图例

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,11,1)
y=x*x
plt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')
plt.legend(loc=3,ncol=2)#loc,ncol指定位置和列
plt.show()

#方式2
plt.plot(x,x*2)
plt.plot(x,x*3)
plt.plot(x,x*4)
plt.legend(['Normal','Fast','Faster'])

plt.show()

#OO
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
l,=plt.plot(x,y)

ax.legend(['ax legend'])

line, =ax.plot(x,y,label='Inline label')

line.set_label('label via method')

ax.legend()

plt.show()

# 坐标轴

## 坐标轴范围

plt.axis()–输出（横坐标最小值，横坐标最大值，纵坐标最小值，纵坐标最大值）

plt.ylim([0,60])
plt.xlim(xmin=-5)

## 坐标轴刻度

import matplotlib.pyplot as plt
import numpy as np
import datetime
x=np.arange(1,11,1)
ax=plt.plot(x,x)
ax=plt.gca()

ax.locator_params(nbins=20)#坐标轴有多少格
#ax.locator_params('x',nbins=20)#指定调整x轴

start=datetime.datetime(2015,1,1)
stop=datetime.datetime(2016,1,1)
delta=datetime.timedelta(days=1)
dates=mpl.dates.drange(start,stop,delta)
y=np.random.rand(len(dates))
ax=plt.gca()
ax.plot_date(dates,y,linestyle='-',marker='')
plt.show()
date_format=mpl.dates.DateFromatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(date_format)
fig.autofmt_xdate()
plt.show()

## 添加坐标轴

plt.twinx() 默认0-1
plt.twiny() 共享y 轴

Vieu3.3主题

Q Q 登 录