运维开发网

Python,数据可视化超详细的讲解

运维开发网 https://www.qedev.com 2022-07-04 21:30 出处:网络
数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。而很多时候,一张漂亮的可视化图表就足以胜过千言万语,让我们来用Python实 绘制简

数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。而很多时候,一张漂亮的可视化图表就足以胜过千言万语,让我们来用Python实 绘制简单的折线图

在使用matplotlib绘制简单的折线图之前,需要先安装matplotlib,可以直接在pycharm终端pip安装matplotlib。


使用matplotlib绘制简单的折线图,然后对其进行定制,实现数据可视化操作。

import matplotlib.pyplot as plt # 导入pyplot模块并设置别名为pltsquares = [1, 4, 9, 16, 25]plt.plot(squares)plt.show() # 打开matplotib查看器,并显示绘制的图形

运行结果如下:


修改标签文字和线条粗细

上图显示的数字越来越大,但是标签文字太小,线条太细,无法观察。这时就需要对其进行调整,增加图形的可读性。

import matplotlib.pyplot as plt # 导入pyplot模块并设置别名为pltsquares = [1, 4, 9, 16, 25]plt.plot(squares, linewidth=5) # 函数linewidth设置绘制线条的粗细# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', labelsize=14)plt.show() # 打开matplotib查看器,并显示绘制的图形

效果如下:


校正图形

该图更容易阅读,但我们发现没有正确的绘图数据。折线图的终点表示4的平方是25!


当plot()被提供了一系列数字时,它假设第一个数据点对应的x坐标值是0,但是我们的第一个点对应的x值是1。要改变这种默认行为,我们可以为plot提供输入和输出值。

import matplotlib.pyplot as plt # 导入pyplot模块并设置别名为pltinput_value = [1, 2, 3, 4, 5]squares = [1, 4, 9, 16, 25] plt.plot(input_value, squares, linewidth=5) # 函数linewidth设置绘制线条的粗细# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', labelsize=14)plt.show() # 打开matplotib查看器,并显示绘制的图形

效果如下:


现在plot()成功地绘制了数据,因为我们提供了输入值和输出值。使用plot()时,可以指定各种参数,并且可以使用许多函数自定义图像。

使用scatter()绘制散点图并设置其格式

有时需要绘制散点图并格式化每个数据。例如,您可能希望用一种颜色显示较小的值,用一种颜色显示较大的值。在绘制大型数据集时,还可以为每个点设置相同的格式,然后用不同的样式选项重新绘制一个点,以突出显示它们。要绘制一个点,可以使用scatter()函数并向其传递一对x和y坐标,这将在指定的绘图处绘制一个点。

import matplotlib.pyplot as pltplt.scatter(2, 4) # 向scatter函数传递一对x,y坐标plt.show() # 打开matplotib查看器,并显示绘制的图形

效果如下:


下面是如何设计输出的样式以使其更有趣:添加标题、标记轴和格式化文本。

import matplotlib.pyplot as pltplt.scatter(2, 4, s=200) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', 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() # 打开matplotib查看器,并显示绘制的图形

效果如下:


使用散点图()绘制一系列点

import matplotlib.pyplot as pltx_values = [1, 2, 3, 4, 5]y_values = [1, 4, 9, 16, 25]plt.scatter(x_values, y_values, s=100) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', 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() # 打开matplotib查看器,并显示绘制的图形

效果如下:


自动计算数据

手动计算列表中包含的值比较麻烦,可以通过python中的loop来解决。下面是一个抽1000分的例子:

import matplotlib.pyplot as pltx_values = list(range(1, 1001))y_values = [x ** 2 for x in x_values]plt.scatter(x_values, y_values, s=10) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', which='major', labelsize=14)# 设置每个坐标轴的取值范围plt.axis([0, 1100, 0, 1100000])plt.show() # 打开matplotib查看器,并显示绘制的图形

这里需要注意的是,函数轴需要传入四个值,x和y坐标的最小值,最大值有如下作用:


删除数据点的轮廓

要删除一个数据点的轮廓,可以在调用scatter()时传递参数edgecolor = lsquo非rsquo;

plt.scatter(x_values, y_values, edgecolors='none', s=10)import matplotlib.pyplot as pltx_values = list(range(1, 1001))y_values = [x ** 2 for x in x_values]plt.scatter(x_values, y_values, edgecolors='none', s=10) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', which='major', labelsize=14)# 设置每个坐标轴的取值范围plt.axis([0, 1100, 0, 1100000])plt.show() # 打开matplotib查看器,并显示绘制的图形

效果如下:


自定义颜色

要修改数据点的颜色,您可以将参数C传递给scatter()并将其设置为您想要使用的颜色的名称。

plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10)import matplotlib.pyplot as pltx_values = list(range(1, 1001))y_values = [x ** 2 for x in x_values]plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', which='major', labelsize=14)# 设置每个坐标轴的取值范围plt.axis([0, 1100, 0, 1100000])plt.show() # 打开matplotib查看器,并显示绘制的图形

效果如下:


使用颜色映射

Colormap是从一种颜色到最终颜色逐渐变化的一系列颜色。在可视化中,颜色映射用于突出数据的规律。例如,您可以使用较浅的颜色显示较小的值,使用较深的颜色显示较大的值。

import matplotlib.pyplot as pltx_values = list(range(1, 1001))y_values = [x ** 2 for x in x_values]# 将c设置为y值列表,使用参数cmap告诉pyplot使用哪个颜色映射plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', which='major', labelsize=14)# 设置每个坐标轴的取值范围plt.axis([0, 1100, 0, 1100000])plt.show() # 打开matplotib查看器,并显示绘制的图形


自动保存图表

要让程序自动将图表保存到文件中,请将对plt.show()的调用替换为对plt.sacefig()的调用

plt.savefig('squares.png',bbox_inches='tight')

第一个参数指定用什么样的文件名保存图表,第二个参数指定图表多余的空空白区域将被裁剪掉(如果想保留它,可以省略这个参数)。

import matplotlib.pyplot as pltx_values = list(range(1, 1001))y_values = [x ** 2 for x in x_values]# 将c设置为y值列表,使用参数cmap告诉pyplot使用哪个颜色映射plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10) # 向scatter函数传递一对x,y坐标# 设置图表标题,并给坐标轴加上标签plt.title('Square number', fontsize=24)plt.xlabel('Value', fontsize=14)plt.ylabel('Square of Value', fontsize=14)# 设置刻度标记的大小plt.tick_params(axis='both', which='major', labelsize=14)# 设置每个坐标轴的取值范围plt.axis([0, 1100, 0, 1100000])plt.savefig('squares.png',bbox_inches='tight')plt.show() # 打开matplotib查看器,并显示绘制的图形

节省效果如下:


注意:一定要把保存图表的代码放在plt.show前面,如果放在后面,show会重新创建一张新的图片。


以上是绘制简单折线图的教程。如果你有什么改进的建议,请在评论区留言。

人生苦短,我用python

这就是这篇关于Python数据可视化的文章,详细解释了折线图的实现。关于Python折线图的更多信息

0

精彩评论

暂无评论...
验证码 换一张
取 消