数据可视化即通过可视化表示数据,与数据挖掘有关,而数据挖掘是通过一些代码来探索海量数据集中的联系和规律。
通过一些简洁的方式呈现数据,让观看者能够明白海量数据集中的规律和意义。
笔者通过使用matploylib工具(是一个数学绘图库),制作简单的图表,如折线图,散点图。最后我们将基于漫步概念生成一个很有意思的数据集——一系列随机决策的图表。
一:安装matplotlib
笔者基于Windows系统进行实践,在此只表述在Windows系统下的各种操作。
在Windows系统中,首先安装Visual Studio,通过访问(http://dev.windows.com/),查找Visual Studio Community,下载并运行安装。之后,我们需要下载matplotlib安装程序。我们需要先访问(https://pypi.python.org/pypi/matplotlib/),查找与你使用的Python版本相匹配的wheel文件。
以笔者为例,我使用的是64位的Python3.7,则需要下载:
将.whl文件复制到你项目所在的文件夹中,打开命令窗口,切换到该项目文件夹中,在使用pip来安装matplotlib:
二:测试matplotlib
安装好后,对安装进行测试。使用命令python启动终端会话,再尝试导入matplotlib:
完成以上工作,恭喜!可以愉快的敲代码了~~
三:绘制折线图
导入模块pyplot,指定别名plt:
import matplotlib.pyplot as plt
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=5)
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)
plt.tick_params(axis='both',labelsize=14)
plt.show()
见证成果的时候到了,调试程序后:
四:使用scatter()绘制散点图
在此,就不展现单点的展示图了,我们将点数提升到1000个,并加入一些删除数据点轮廓,颜色映射等操作。
import matplotlib.pyplot as plt
x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]
//plt.scatter(x_values,y_values,c=(0.8,0.8,1),edgecolors='none',s=40)
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=40)
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)
plt.axis([0,1100,0,1100000])
//plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
plt.savefig('squares_plot.png',bbox_inches='tight')
展示效果图:
五:随机漫步
什么是随机漫步?就是每一次行走都是完全随机的,没有明确的方向。就像是蚂蚁在晕头转向的情况下,沿随机方向行走所经过的路径。
首先我们创建RandomWalk()类,它随机地选择前进方向。这个类需要三个属性,分别用来存储随机漫步次数的变量,随机漫步经过的每个点的X和Y坐标。还包括两个方法,用来计算随机漫步经过的所有点。
from random import choice
class RandomWalk():
def __init__(self, num_points = 5000):
self.num_points = num_points
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
while len(self.x_values) < self.num_points:
x_direction = choice([1,-1])
x_distance = choice([0,1,2,3,4])
x_step = x_direction * x_distance
y_direction = choice([1,-1])
y_distance = choice([0,1,2,3,4])
y_step = y_direction * y_distance
if x_step == 0 and y_step ==0:
continue
next_x = self.x_values[-1] + x_step
next_y = self.y_values[-1] + y_step
self.x_values.append(next_x)
self.y_values.append(next_y)
然后,通过下面的代码将随机漫步的所有点绘制出来:
port matplotlib.pyplot as plt
from random_walk import RandomWalk
while True:
rw = RandomWalk(50000)
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,edgecolor='none',s=1)
plt.scatter(0,0,c='green',edgecolor='none',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
plt.show()
keep_running = input("Make another walk? (y/n):")
if keep_running == 'n':
break
这里,我们已经将点数提高到50000点,给起点和终点进行染色处理,还进行了颜色映射,隐藏坐标轴等操作。
通过模拟一次50000点的随机漫步,每个点的大小设置为1,最后展现出来的就像云朵,非常的漂亮~~
以上就是笔者最近的工作整理~~~~