数据可视化
一、准备工作
安装matplotlib
推荐使用pip安装
pip install matplotlib
二、绘制简单的折线图
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(squares)
plt.show()
首先导入了模块pyplot,并指定其别名为plt。模块pyplot包含许多用于生成图表的函数。
接下来,创建一个列表,在其中存储了前述平方数,在将这个列表传递给函数plot(),这个函数尝试根据这些数据绘制出有意义的图形。
plt.show()打开matplotlib查看器,显示绘制的图形。
1、修改标签文字和线条粗细
其实就是改变图表的一些参数。目的就是为了更好的观赏
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(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()
参数linewidth决定了plot()绘制线条的粗细。
函数title()给图表指定标题。
frontsize指定字体大小。
函数xlabel()和ylabel()让你可以为每条坐标轴设置标题。
函数tick_params()设置刻度的样式,其中指定的实参将影响x轴和y轴上的刻度(axis = 'both'), 并将刻度标记的字号设置为14。
2.校正图形
如果你仔细观察的话,你会发现刚刚绘制的图形有错误!
那应该要怎样修复这个问题呢?
当你向plot()提供一系列数字时,它假设第一个数据点对应的X坐标值为0,但我们的第一个点对应的X值为1。为改变这种默认行为,我们可以给plot()同时提供输入值和输出值。
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()
现在plot()将正确的绘制数据,因为我们同时提供了输入值和输出值,它无需对输出值的生成方式进行假设。
3、使用scatter()绘制散点图并设置其样式
可以用scatter()绘制单个点
import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()
下面来设置输出的样式,使其更有趣:添加标题,给轴加上标签,并确保所有文本可以大到可以看清。
import matplotlib.pyplot as plt
plt.scatter(2, 4, s=200)
#设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize = 24)
plt.xlabel("Value", fontsize = 12)
plt.ylabel("Squa of Value", fontsize = 12)
#设置刻度标记的大小
plt.tick_params(axis = 'both', which = 'major', labelsize = 12)
plt.show()
实参s设置了绘制图形时使用的点的尺寸。
4、使用scatter()绘制一系列离散点
只需要向scatter()传递两个分别包含x值和y值的列表即可。
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=200)
#设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize = 24)
plt.xlabel("Value", fontsize = 12)
plt.ylabel("Squa of Value", fontsize = 12)
#设置刻度标记的大小
plt.tick_params(axis = 'both', which = 'major', labelsize = 12)
plt.show()
5、删除数据点的轮廓
我们完全不需要手工计算出数据,可以依据计算机来计算数据并将图表绘制出来。
import matplotlib.pyplot as plt
x_values = list(range(1,1000))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values,edgecolor='none', s=40)
#设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize = 24)
plt.xlabel("Value", fontsize = 12)
plt.ylabel("Squa of Value", fontsize = 12)
#设置刻度标记的大小
plt.tick_params(axis = 'both', which = 'major', labelsize = 12)
#设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()
plt.scatter(x_values, y_values,edgecolor='none', s=40)
默认点的特征是蓝色点和黑色的轮廓,如果使用edgecolor='none'参数时,运行后我们会发现点是蓝色的,没有轮廓。
6、自定义颜色
有个参数c是是离散点背景颜色,只需要将scatter()加入几个参数即可。
plt.scatter(x_values, y_values, c = 'red', edgecolor='none', s=200)
7、使用颜色映射
颜色映射是一系列颜色,它们从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律。
plt.scatter(x_values, y_values, c = y_values, cmap=plt.cm.Blues, edgecolor='none', s=200)
将参数设置成了一个y值列表,并使用cmap告诉pyplot使用哪一种颜色映射。这些代码将y值较小的点显示为浅蓝色,将y值较大的点显示为深蓝色。
8、自动保存图表
plt.savefig('squares_plot.png', bbox_inches='tight')
第一个实参指定保存的文件名,在该语句中,图表将保存到源文件所在的目录中;
第二个参数指定将图表中的空白区域剪裁掉。(如果希望保图表周围多余的空白区域,可以忽略这个参数)