python三维散点图_python机器学习库的介绍1:可视化库Matplotlib

这里为什么先介绍Matplotlib库呢?那是因为大多数人对于学习枯燥的文字叙述叙述表示头疼,而如果能够将其可视化了后就有一种耳目一新的感觉,我也属于这类人。

Matplotlib或者说更为重要的PyPlot子包,是Python中用来可视化二维数据的基本工具。PyPlot使用命令式函数,是仿照MatLab进行工作的,每个PyPlot函数都会对其实例做一些改变,其核心算法是Plot方法,最为简单的实现是传入一个列表或一堆数组。

如果只传入一个参数,plot会假设该参数为y值序列,且自动生成x值(一般情况下我们会给plot传入两个一位数组或列表分别作为x、y轴。当然,plot还可以接受一个用来指明线条属性的参数,例如线条颜色、宽度及风格等。且看如下示例:、

import numpy as np

import matplotlib.pyplot as plt

x = np.arange(0., 6., 0.2 )

plt.plot(x, x**4, 'r', x, x*90, 'bs', x, x**3, 'g')

plt.show()

运行上述代码后,结果如图:

65f75689856faef2f0bb87b18a7535e4.png

MatPlotlib示例

由运行结果可以看出,这段代码打印出三条不同风格的线条:红色、蓝色及绿色,pyplot可以传入多对坐标数组来绘制多个线条,下面我们来看创建多个坐标轴的subplot命令。

import numpy as np

import matplotlib.pyplot as plt

x1 = np.arange(0., 5., 0.1 )

x2 = np.arange(0., 5., 0.2 )

plt.figure(1)

plt.subplot(211)

plt.plot(x1, x1**4, 'r', x1, x1*90, 'bs', x1, x1**3, 'g^', linewidth=3.0)

plt.subplot(212)

plt.plot(x2, np.cos(2*np.pi*x2), 'k')

plt.show()

上述代码的输出结果如下:

a1b53a20b82a6bb53a5c28520d2c3772.png

subplot建立多个坐标轴示例

下面我们来看一下matplotlib的直方图:hist()对象以一个数组或一个数组序列作为输入值。第二个参数是方柱的数量,我们以10个方柱为例:

import numpy as np

import matplotlib.pyplot as plt

mu, sigma = 100, 15

x=mu+sigma*np.random.randn(1000)

#当设置normed为1或True时,表示要对计数进行归一化,形成概率密度

n, bins, patches = plt.hist(x, 10, normed=1,

facecolor='b')

plt.xlabel('Frequency')

plt.ylabel('Probability')

plt.title('Histogram Example')

plt.text(40, .028, 'mean=100 std.dev .=15')

plt.axis([40, 160, 0, 0.03])

plt.grid(True)

plt.show()

上述代码运行结果如下:

c7749578563da24cedcbacf2c2e2949c.png

Matplotlib直方图示例

Matplotlib散点图:散点图通过scatter函数来实现,其对象以长度一样的两个序列对象作为参数,对应代码如下:

import numpy as np

import matplotlib.pyplot as plt

N =100

x = np.random.rand(N)

y = np.random.rand(N)

colors = ('r', 'b', 'g')

area = np.pi*(10*np.random.rand(N))*2 #点的半径范围0-10

plt.scatter(x, y, s=area, c=colors,alpha=0.5)

plt.show()

运行后结果如下图:

d3bdf4cb2d10f3113d96cd335adb6312.png

散点图

Matplotlib三维图像:针对三维图像,Matplotlib也具有强大的工具包,其创建方法和二维图形类似,下面我们以简单的三维点、线、面为例说明(这里我们使用了gca函数的当前坐标轴,设置投影参看为三维):

代码如下:

import matplotlib as mpl

from mpl_toolkits.mplot3d import axes3d

from matplotlib import cm

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()

ax = fig.gca(projection='3d')

theta = np.linspace(-3 * np.pi, 6*np.pi, 100)

z = np.linspace(-2, 2, 100)

r = z**2 +1

x = r * np.sin(theta)

y = r * np.cos(theta)

ax.plot(x, y, z)

theta2 = np.linspace(-3 * np.pi, 6*np.pi, 20)

z2 = np.linspace(-2, 2, 20)

r2 = z2**2 +1

x2 = r2 * np.sin(theta2)

y2 = r2 * np.cos(theta2)

ax.scatter(x2, y2, z2, c='r')

x3 = np.arange(-5, 5, 0.25)

y3 = np.arange(-5, 5, 0.25)

x3, y3 = np.meshgrid(x3, y3)

R = np.sqrt(x3**2 + y3**2)

z3 =np.sin(R)

surf = ax.plot_surface(x3, y3, z3, rstride=1, cstride=1, cmap=cm.Greys_r,

linewidth=0, antialiased=False)

ax.set_zlim(-2, 2)

plt.show()

运行以上代码,显示结果如下:

7117d851a4103bfe92360361c51d5ee2.png

matplotlib的三维图显演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值