深度学习阶段三_机器学习---数据科学包04_05_06_数据可视化

1. 课程简介和环境搭建.

数据绘图包

import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [3, 2, 1])
plt.show()
# 画简单图

2. Numpy简介

import numpy as np

a = [1, 2, 3, 4]
x1 = np.array(a)
print(x1)  # 将其转换成ndarray对象,第一种
x1 = np.arange(11)
print(x1)  # 也生成一种array函数,第二种
x = np.loadtxt('000001.csv', delimiter=',', skiprows=1, usecols=(1, 4, 6), unpack=False)
# 加载txt,第一个引号就是在本目录下的文件,第二个是分隔符号,第三个是跳过第一行,第四个放在一个队列
x.shape  # 显示其类型

3. 散点图.

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()

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, s=100, c='r', marker='<', alpha=0.5)
# s是图的大小,c是管颜色,marker是形状,alpha是透明度
plt.show()

4. 折线图.

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, 5)  # -10开始到10结束,生成5份
y = x ** 2
plt.plot(x, y)
plt.show()

5. 条形图.

6. 直方图.

7. 饼状图.

8. 箱形图.

9. 颜色和样式.

10. 面向对象 VS Matlab Style.

不推荐第二种

11. 子图-subplot.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(1, 100)
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax1.plot(x,x)
plt.show()

12. 多图-figure.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot([1, 2, 3], [3, 2, 1])

fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot([1, 2, 3], [1, 2, 3])

plt.show()

13. 网格.

两种:1. grid函数    2 . 面向对象

plt在交互式里面比较好

14. 图例_legend.

plt.legend()

推荐plt方式

15. 坐标轴范围.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.axis(-10, 10, 0, 100)
plt.xlim([-5, 5])  # 只调整x轴,不调整y轴
plt.ylim([-5, 60])  # 只调整y轴,不调整x轴
plt.xlim(xmin=5)  # xmin改变,xmax不改变

16. 坐标轴刻度

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(1, 11, 1)
plt.plot(x, x)
ax = plt.gca()
ax.locator_params(nbins=20)
plt.show()

还有设置日期间隔,前面讲了

17. 添加坐标轴.

添加双坐标轴

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(2, 20, 1)
y1 = x**2
y2 = np.log(x)
plt.plot(x, y1)
plt.plot(x, y2, 'r')
plt.twinx()
plt.show()

18. 注释.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(-10, 11, 1)
y = x * x
plt.plot(x, y)
plt.annotate('this is the bottom', xy=(0, 1), xytext=(-2, 20),
            arrowprops=dict(facecolor='r', frac=0.2, headwidth=30,width=10))
# 第一个是显示的文字,第二个是显示的坐标长度,第三个是文字坐标
plt.show()

19. 文字.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(-10, 11, 1)
y = x * x
plt.plot(x, y)
plt.text(-2, 40, 'function:y=x*x', family='serif', size=20, color='r', style='italic', weight=0)
plt.text(-2, 20, 'function:y=x*x', family='sans-serif', size=20, color='g', style='oblique', weight=1000, bbox=dict(facecolor='r', alpha=0.2))
plt.show()

 

20. Tex公式.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([1, 7])
ax.set_ylim([1, 5])
ax.text(2, 4, r"$ \alpha_i \beta_j \pi \lambda \omega $", size=25)  # 面向对象方式
ax.text(4, 4, r"$ \sin(0)=\cos(\frac{\pi}{2}) $", size=25)   # 看文档查
ax.text(2, 2, r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $", size=25)
ax.text(4, 2, r"$ \sqrt[4]{x}=\sqrt{y} $", size=25)
plt.show()

21. 工具栏

工具栏进行查看

22. 区域填充.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.linspace(0, 5*np.pi, 1000)
y1 = np.sin(x)
y2 = np.sin(2*x)
# plt.plot(x, y1)
plt.plot(x, y2)
plt.fill(x, y1, 'b', alpha=0.3)
plt.fill(x, y2, 'r', alpha=0.3)
plt.show()
# fillbetween 用来使用间隔

23. 形状.

import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
xy1 = np.array([0.2, 0.2])
xy2 = np.array([0.2, 0.8])
circle = mpatches.Circle(xy1, 0.05)  # 第一个位置是位置,第二个是半径
rect = mpatches.Rectangle(xy2, 0.2, 0.1, color='r')
ax.add_patch(circle)
ax.add_patch(rect)
plt.axis('equal')
plt.show()

还有其他形状,遇到了去查就行了

24. 样式-美化.

import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

fig, axes = plt.subplots(ncols=2, nrows=2)
ax1, ax2, ax3, ax4 = axes.ravel()
x, y = np.random.normal(size=(2, 100))
ax1.plot(x, y, 'o')
x = np.arange(0, 10)
y = np.arange(0, 10)
ncolors = len(plt.rcParams['axes.color_cycle'])
shift = np.linspace(0, 10, ncolors)
for s in shift:
    ax2.plot(x, y+s, '-')

plt.show()

# 美化plt.style.use('ggplot')

25. 极坐标.

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(1, 6, 1)
theta = [0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi]
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r, color='r', linewidth=3)
ax.grid(True)
plt.show()

26. 函数积分图.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

def func(x):
    return -(x-2)*(x-8)+40


x = np.linspace(0, 10)
y = func(x)
fig, ax = plt.subplots()
plt.plot(x, y, 'r', linewidth=2)
a = 2
b = 9
ax.set_xticks([a, b])
ax.set_yticks([])
ax.set_xticklabels(['$a$', '$b$'])
ix = np.linspace(a, b)
iy = func(ix)
ixy = zip(ix, iy)
verts = [(a, 0)] + list(ixy) + [(b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')
ax.add_patch(poly)
plt.figtext(0.9, 0.05, '$x$')
plt.figtext(0.1, 0.9, '$y$')

# 画数学公式
x_math = (a + b) * 0.5*0.7
y_math = 35
plt.text(x_math, y_math, r'$\int_a^b (-(x-2)*(x-8)+40)dx$')
plt.show()

28. 散点-条形图.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

plt.style.use('ggplot')
x = np.random.randn(200)
y = x + np.random.randn(200) * 0.5
margin_border = 0.1
width = 0.6
margin_between = 0.02
height = 0.2

left_s = margin_border
bottom_s = margin_border
height_s = width
width_s = width

left_x = margin_border
bottom_x = margin_border + width + margin_between
height_x = height
width_x = width

left_y = margin_border + width + margin_between
bottom_y = margin_border
height_y = width
width_y = height
plt.figure(1, figsize=(8, 8))

rect_s = [left_s, bottom_s, width_s, height_s]
rect_x = [left_x, bottom_x, width_x, height_x]
rect_y = [left_y, bottom_y, width_y, height_y]

axScatter = plt.axes(rect_s)
axHisX = plt.axes(rect_x)
axHisY = plt.axes(rect_y)

axHisX.set_xticks([])
axHisY.set_yticks([])

axScatter.scatter(x, y)

bin_width = 0.25
xymax = np.max([np.max(np.fabs(x)), np.max(np.fabs(y))])
lim = int(xymax/bin_width + 1) * bin_width
axScatter.set_xlim(-lim, lim)
axScatter.set_ylim(-lim, lim)

bins = np.arange(-lim, lim+bin_width, bin_width)

axHisX.hist(x, bins=bins)
axHisY.hist(y, bins=bins, orientation='horizontal')
axHisX.set_xlim(axScatter.get_xlim())
axHisY.set_ylim(axScatter.get_ylim())

plt.title('Scatter and Hist')
plt.show()

31. 球员能力图


import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

plt.style.use('ggplot')
font = FontProperties(fname=r'c:\windows\fonts\simsun.ttc', size=12)
ability_size = 6
ability_label = [u'进攻', u'防守', u'盘带', u'速度', u'体力', u'射术']

ax1 = plt.subplot(221, projection='polar')
ax2 = plt.subplot(222, projection='polar')
ax3 = plt.subplot(223, projection='polar')
ax4 = plt.subplot(224, projection='polar')
player = {
    'M': np.random.randint(size=ability_size, low=60, high=99),
    'H': np.random.randint(size=ability_size, low=60, high=99),
    'P': np.random.randint(size=ability_size, low=60, high=99),
    'Q': np.random.randint(size=ability_size, low=60, high=99),
}
theta = np.linspace(0, 2*np.pi, 6, endpoint=False)

theta = np.append(theta, theta[0])
player['M'] = np.append(player['M'], player['M'][0])
ax1.plot(theta, player['M'], 'r')
ax1.fill(theta, player['M'], 'r', alpha=0.3)
ax1.set_xticks(theta)
ax1.set_xticklabels(ability_label, y=0.1, fontproperties=font)
ax1.set_title(u'梅西', fontproperties=font, color='r', size=20)


player['H'] = np.append(player['H'], player['H'][0])
ax2.plot(theta, player['H'], 'g')
ax2.fill(theta, player['H'], 'g', alpha=0.3)
ax2.set_xticks(theta)
ax2.set_xticklabels(ability_label, y=0.1, fontproperties=font)
ax2.set_title(u'哈维', fontproperties=font, color='g', size=20)


player['P'] = np.append(player['P'], player['P'][0])
ax3.plot(theta, player['P'], 'b')
ax3.fill(theta, player['P'], 'b', alpha=0.3)
ax3.set_xticks(theta)
ax3.set_xticklabels(ability_label, y=0.1, fontproperties=font)
ax3.set_title(u'皮克', fontproperties=font, color='b', size=20)


player['Q'] = np.append(player['Q'], player['Q'][0])
ax4.plot(theta, player['Q'], 'y')
ax4.fill(theta, player['Q'], 'y', alpha=0.3)
ax4.set_xticks(theta)
ax4.set_xticklabels(ability_label, y=0.1, fontproperties=font)
ax4.set_title(u'切赫', fontproperties=font, color='y', size=20)

plt.show()

32. 股票K线图

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.finance import quotes_historical_yahoo_ohlc, canddestick_ohic

plt.style.use('ggplot')
data1 = (2010, 2, 1)
data2 = (2010, 5, 1)
quotes_historical_yahoo_ohlc('INTC', data1, data2)

volumns = np.array([])
dates = np.array([])

for record in quotes:
    dates = np.append(dates.record[0])
    volumns = np.append(volumns.record[5])

left, width = 0.1, 0.8
rect_vol = [left, 0.1, width, 0.26]
rect_main = [left, 0.4, width, 0.5]
fig = plt.figure()

ax_vol = fig.add_axes(rect_vol)
ax_vol.fill_between(dates, volumns, color='y')
ax_vol.xaxis_date()
plt.setp(ax_vol.get_xticklabels(), rotation=30, horizontalalignment='right')

ax_main = fig.add_axes(rect_main)
canddestick_ohic(ax_main, quotes, width=0.6, colorup='r', colordown='g')

ax_main.axes.get_xaxis().set_visible(False)

ax_main.axes.get_xaxis().set_visible(False)
ax_main.set_title('Stock INTC Price and Volumn')
plt.show()

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值