python-数据可视化
** 数据可视化指的是通过可视化表示来探索数据,它与数据挖掘**紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据
最流行的工具之一是matplotlib它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图。然后,我们将基于随机漫步概念生成一个更有趣的数据集——根据一系列随机决策生成的图表。
我们还将使用Pygal包,它专注于生成适合在数字设备上显示的图表。可在用户与图表交互时突出元素以及调整其大小,还可轻松地调整整个图表的尺寸,使其适合在微型智能手表或巨型显示器上显示。
一、安装matplotlib
在Windows系统中,首先需要安装Visual Studio
参考:http://t.csdnimg.cn/336oy
在命令行窗口输入
pip install matplotlib
对安装进行测试。为此,首先使用命令python
或python3
启动一个终端会话,再尝试导入matplotlib:
$ python3
>>> import matplotlib
>>>
如果没有出现任何错误消息,就说明你的系统安装了matplotlib
matplotlib官网实例
Plot types — Matplotlib 3.9.0 documentation
二、使用matplotlib
折线图
1.pyplot()绘制简单的折线图
示例1:绘制简单的折线图
import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()
注意:在pycharm容易报错:
AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘
这时需要修改某些参数,可以这样将上面文件第一行改为下面三行。
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
2.定制折线图的通用参数
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as npsquares = [1, 4, 9, 16, 25]
# make data:
plt.plot(squares, linewidth=1)
#linewidth决定了plot()绘制的线条的粗细# 设置图表标题,并给坐标轴加上标签
plt.title("Number--graf", fontsize=24)
#函数title()给图表指定标题,fontsize指定了图表中文字的大小plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
#函数xlabel()和ylabel()让你能够为每条轴设置标题# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
#函数tick_params()设置刻度的样式其中指定的实参将影响x轴和y轴上的刻度(axis='both'),并将刻度标记的字号设置为14(labelsize=14)。plt.show()
这样画出来的图像并不是完全正确的
原因在于当你向plot()
提供一系列数字时,它假设第一个数据点对应的 x 坐标值为0
因此需要指定第一个点对应的 x 值为1,改变默认的行为
方法是给plot()
同时提供输入值和输出值
plot()正确使用如下:
input_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
plt.plot(input_values, squares, linewidth=5)
#第一个列表指定x轴的参数
#第二个列表指定y轴的参数
散点图
1.使用scatter()
绘制散点图
plt.scatter(2, 4)
#使用`scatter()`,并向它传递一对 *x* 和 *y* 坐标,它将在指定位置绘制一个点
绘制一个点
import matplotlib.pyplot as pltplt.scatter(2, 4,s=200)
#并使用实参s设置了绘制图形时使用的点的尺寸。# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)plt.show()
绘制一系列点
要绘制一系列的点,可向
scatter()
传递两个分别包含x值和y值的列表
x_values = [1, 2, 3, 4, 5]
#横坐标的列表
y_values = [1, 4, 9, 16, 25]
#纵坐标的列表
plt.scatter(x_values, y_values, s=100)
使用for循环绘制一群点
x_values = list(range(1,100))y_values =[i**2 for i in range(1,100)]
#方法同上
plt.scatter(x_values, y_values, s=100)plt.axis([0, 1100, 0, 1100000])
#函数axis()要求提供四个值:x(1-1100) 和 y(0-1100000) 坐标轴的最小值和最大值
scatter()的另一个参数
edgecolor=‘none’ 作用删除数据点的轮廓,默认蓝色
edgecolor=‘black’ 作用将数据点的轮廓线条改为黑色