【有书共读05】python编程--从入门到实践14

数据可视化

一、准备工作

安装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')

第一个实参指定保存的文件名,在该语句中,图表将保存到源文件所在的目录中;
第二个参数指定将图表中的空白区域剪裁掉。(如果希望保图表周围多余的空白区域,可以忽略这个参数)

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务