当前位置: 首页 > article >正文

Python数据可视化——生成数据(一)

        数据可视化时通过可视化表示来探索数据,它与数据挖掘紧密相关,数据挖掘是指使用代码来探索数据集的规律和关联。

        Matplotlib时一个数学绘图库,可以使用它制作简单的图表,如折线图和散点图。

1、安装matplotlib

        首先,需要安装matplotlib。

1.1 Linux系统中安装matplotlib

        如果使用系统自带的Python版本,可以使用系统的包管理器来安装,只需执行命令:

$ sudo apt-get install python3-matplotlib

        如果安装了较新版本的Python,则要先安装matplotlib依赖的一些库,例如:

$ sudo apt-get install pythoon3.5-dev python3.5-tk tk-dev
$ sudo apt-get install libfreetype6-dev g++

再使用pip安装matplotlib:

$ pip install --user matplotlib

1.2 OS X系统中安装matplotlib

        Apple的标准Python安装自带了matplotlib。要检查是否安装了matplotlib,可以打开一个终端并尝试导入matplotlib。如果没有自带,可以使用pip安装:

$ pip install --user matplotlib

注意:安装包时可能要使用pip3,而不是pip。如果命令不能顺利安装,可能需要删除标志--user。

1.3 Windows系统中安装matplotlib

        在Windows系统中,同样可以使用pip命令安装:

pip install package_name

       在 Anaconda虚拟环境下,还可以使用conda命令来安装:

conda activate env_name

具体教程可以参考博客:深度学习中项目的环境配置与依赖下载

1.4 验证matplotlib

        安装完必要的包之后,对安装进行验证。启用终端,在Python环境下,尝试导入matplotlib:

>>> import matplotlib
>>> 

如果没有出现任何错误信息,就说明安装成功。

1.5 matplotlib画廊

        要查看使用matplotlib可制作的各种图表,可以访问:Matplotlib — Visualization with Python的示例,点击图表即可查看用于生成图表的代码。

2、绘制简单的折线图

 只需调用matplotlib,就能实现数据可视化:

import matplotlib.pyplot as plt

squares = [1,4,9,16,25]
plt.plot(squares)
plt.show()

        先导入matplotlib中的一个模块pyplot并为其指定别名plt,以免反复输入pyplot。大多程序都是这样做的。模块pyplot中包含很多用于生成图表的函数。

        接着创建了一个列表存储数据,再将该列表传递给函数plot()。plt.show()打开matplotlib查看器,并显示绘制的图形。

        如图所示,显示器能缩放和导航图形,以及保存图形。

 2.1 修改标签文字和线条粗细

import matplotlib.pyplot as plt
from matplotlib.pyplot import tick_params
from sympy.printing.pretty.pretty_symbology import line_width

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指定了绘制的线条粗细。函数title()指定图表标题。参数fontsize指定了图表中文字的大小。函数xlabel()和ylabel()为每个轴设置轴标题。函数tick_params()设置刻度的格式,参数axis='both'表明实参同时影响x轴和y轴,并将刻度的字号设为14(labelsize=14)。

 2.2 校正图形

        上图中,y轴平方数结果并没有对应x轴的数,这是因为,当只向plot()函数提供一个参数(即[1,4,9,16,25])时,默认第一个数据点对应x=0的位置。

        为改变这种默认,可以向函数提供两个参数:

import matplotlib.pyplot as plt
from matplotlib.pyplot import tick_params
from sympy.printing.pretty.pretty_symbology import line_width

input_value =[1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_value,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()函数可以指定各种实参,还可以使用众多函数对图形进行定制。

2.3 scatter()绘制散点图

        有时候需要绘制散点图并设置各个数据点的样式。例如,使用不同的颜色显示不同的数据。绘制大型数据集时,可以对每个点使用相同的样式,然后使用不同的样式选项重新绘制某些点,以突出显示。

        要绘制单个点,可以使用函数scatter(),并传递一对x和y坐标,将在指定位置绘制一个点:

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=14)
plt.ylabel("square of value",fontsize=14)

#设置刻度的大小
plt.tick_params(axis='both',which='major',labelsize=14)

plt.show()

         调用scatter(),并设置参数s设置点的大小.

 2.4 scatter()绘制一系列点

        要绘制一系列点,可以向scatter()传递两个分别包含x值和y值的列表:

import matplotlib.pyplot as plt

x_value = [1,2,3,4,5]
y_value = [1,4,9,16,25]

plt.scatter(x_value,y_value,s=200)

#设置标题并加上标签
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()

2.5 自动计算数据

        手动计算列表的值效率低下,尤其是点的数量多时。可以使用Python循环来完成这种重复计算:

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,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.show()

         首先创建一个列表作为x轴的值,接着用列表表达式生成y轴的值,然后将两个列表传递给scatter()。

        由于数据集很大,因此将点设置得较小,并使用函数axis()指定每个坐标轴的取值范围。函数axis()要求提供四个值:x坐标的最小值和最大值,y坐标的最小值和最大值。

2.6 删除数据点的轮廓

        matplotlib允许给每个点指定颜色,默认为蓝色点和黑色轮廓,如果点数过多黑色轮廓可能粘在一起。要删除点的轮廓,可以给scatter()函数传递实参edgecolor='none':

plt.scatter(x_values,y_values,edgecolor='none',s=40)

 2.7 自定义颜色

        要修改数据点的颜色,可以向scatter()传递参数c,并设置要使用的颜色:

plt.scatter(x_values,y_values,c='red',edgecolor='none',s=40)

        还可以自定义颜色。传递参数c并将其设置为一个元组,元组包含三个0-1之间的小数值,分别代表红,绿,蓝色分量。例如:

plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolor='none',s=40)

值越接近0,指定的颜色越深;值越接近1,指定的颜色越浅。

2.8 使用颜色映射

        颜色映射(colormap)是一系列颜色,从起始颜色渐变到结束颜色。在可视化中,颜色映射主要用于突出数据的规律,例如使用较浅的颜色来显示较小的值,使用较深的颜色来显示较大的值。

        模块pyplot内置了一组颜色映射。要使用颜色颜色,只需告诉pyplot如何设置数据集中的每个点的颜色。

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=y_values,cmap=plt.cm.Blues,edgecolors='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.show()

        将参数c设置为y值列表,并使用参数cmp告诉pyplot使用哪个颜色映射。结果是将较小的y值显示为浅蓝色,将较大的y值显示为深蓝色。


        要了解pyplot中的所有的颜色映射,可以访问Matplotlib — Visualization with Python,单击Examples,向下找到Color Examples,点击colormaps_reference。


2.9 自动保存图表

        要让程序自动将图表保存到文件中,可以将plt.show()替换为plt.savefig():

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

        第一个参数指定文件名,这个png文件将保存到程序所在文件目录中;第二个参数指定将图表多余的空白区域裁剪掉。如果要保留多余的空白区域,可以省略这个参数。

删除多余空白:

不删除空白:


http://www.kler.cn/a/589726.html

相关文章:

  • Python基于Django和协同过滤算法实现电影推荐系统功能丰富版
  • 跟着AI复习一下pytorch原理和操作
  • OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()
  • 嵌入式硬件篇---龙芯GPIO控制
  • CTF WEB题
  • 每日一题--进程与协程的区别
  • 【在校课堂笔记】Python 第5节课 总结
  • axios 和 fetch异同点
  • Java继承与反思,单例模式与静态的思考
  • 【redis】Jedis 操作 Redis 基础指令(下)
  • Mysql中创建表时的约束条件
  • 力扣刷题——2181.合并零之间的节点
  • Java中的GC是什么?
  • STM32U575RIT6单片机(四)
  • 基于WebRTC与P2P技术,嵌入式视频通话EasyRTC实现智能硬件音视频交互,适配Linux、ARM、RTOS、LiteOS
  • 深度学习处理时间序列(1)
  • 嵌入式学习笔记-C语言知识点:栈的作用,C语言函数参数的入栈顺序,C++ 拷贝构造函数,数组名和指针的区别与联系,指针运算,指针和引用
  • Apache Spark_解决生产环境数据倾斜问题方案及思路
  • Tomcat新手入门指南:从零开始安装与基本配置
  • Python驱动CATIA自动化建模:科赫雪花算法实现与工程应用