d3js绘制y坐标轴_[原创]Day2.零基础如何绘制数据可视化图形_weixin_39639568的博客-CSDN博客

5f0d3ced4f187c83d983532c20e9062c.gif

数据可视化的基础语法

可视化主要是以图像来展示数据间的关系,

常见的图形种类有

  • 折线图,散点图,条形图,直方图,饼图
  • 此外在接下来课程中还会用到箱线图,热力图,蜘蛛图,表示二元变量分布和成对关系的视图。

今天我们要来了解折线图,散点图,条形图,直方图,饼图和器特点。认识Matplotlib的图像结构,并以Matplotlib绘制折线图为例来掌握设置辅助显示层;此外,用Matplotlob设置辅助显示层,内容还增添拓展部份,平时用到的不是很多,作为了解即可。

常见图像

折线图

  • 以折线的上升或下降来表示统计数量的增减变化的统计图

    特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

2ccd70f56fdbed258317fce728666ba6.png

散点图(Scatter)

  • 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

30310e3c27d2e7b972c29eb3aa7360c7.png

条形图

  • 排列在工作表的列或行中的数据可以绘制到柱状图中。

    特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

    9d5e534e10a735fb6292342f9cd4a4df.png

直方图(Histogram)

  • 由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。

    特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)

    4137f1a52d830278dc26b84c04ceaf7e.png

饼图(pie)

  • 用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

    特点:分类数据的占比情况(占比)

620c577ad392f8f69873f8222a6dd370.png

Matplotlib画图基础

1de5406db5c4002d62f8524444d26dc3.png

Matplotlib,它是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。只需几行代码即可生成绘图,直方图,条形图,散点图等。

Matplotlib画图的简单实现

    • *
 # 导入模块import matplotlib.pyplot as plt# 在jupyter中执行的时候显示图片#matplotlib inline# 传入x和y, 通过plot画图plt.plot([3, 1, 7], [4, 5, 6])# 在执行程序的时候展示图形plt.show()

传入x和y时,括号中的第一个列表是x轴上的值,第二个列表是y上的值。

运行结果:

c1e3021e264a996ac55a871a85902c67.png

如何应用呢?

a567ba0ca412004e7b3f6a78d4226656.png

对Matplotlib图像结构的认识

9c2aa7eddec7ab52ef63fd27dd6a5e37.png

在学习Matplotlib的过程中,大家一定会遇到这样那样的问题,

比如说

  • 背景图怎么设置?
  • 坐标轴怎么设置?
  • 坐标轴上的刻度值怎么设置?

    因此对于Matplotlib的图像结构组成我们要有一定的了解。通常情况下,我们可以将一副Matplotlib图像分成三层结构:

  1. 第一层是底层的容器层

    主要包括Canvas(画板)底层、Figure(画布)用户操作第一层设置画布的大小和背景颜色、Axes(绘图区)独立的坐标系;

  2. 第二层:辅助显示层

    主要包括Axis(轴)、Spines(边框线)、Tick(坐标轴刻度)、Grid(网格线)、Legend(图例说明)、Title(标题)等,该层可通过set_axis_off()或set_frame_on(False)等方法设置不显示。

    该层的设置可使图像显示更加直观更加容易被用户理解,但又并不会对图像产生实质的影响。

  3. 第三层:图像层

    即通过plot、hist、contour、scatter等方法绘制的图像。

Matplotlib绘制折线图

折线图的绘制

06c22891e1ee05be7474e2a6cfd637d6.png

代码解析:

x轴数值的产生使用range函数,开始数字是1,结束时7,不包含8。

折线的颜色和形状设置

 from matplotlib import pyplot as pltx = range(1,8) # x轴的位置y = [17, 17, 18, 15, 11, 11, 13]# 传入x和y, 通过plot画折线图plt.plot(x, y, color='red',alpha=0.5,linestyle='--',linewidth=3)plt.show()'''基础属性设置color='red' : 折线的颜色alpha=0.5 : 折线的透明度(0-1)linestyle='--' : 折线的样式linewidth=3 : 折线的宽度''''''线的样式- 实线(solid)-- 短线(dashed)-. 短点相间线(dashdot):虚点线(dotted)'''

运行结果:

a65cc5638a41197979ba02719224c825.png

折点样式

458df1140e20d0276d01087ccac89933.png

折点形状选择:

 标记maker            描述‘o’                 圆圈  ‘.’                 点‘D’                 菱形  ‘s’                 正方形‘h’                 六边形1    ‘*’                 星号‘H’                 六边形2    ‘d’                 小菱形‘_’                 水平线‘v’                 一角朝下的三角形‘8’                 八边形‘<’                 一角朝左的三角形‘p’                 五边形‘>’                 一角朝右的三角形‘,’                 像素  ‘^’                 一角朝上的三角形‘+’                 加号  ‘| ‘               竖线‘None’,’’,’ ‘       无  ‘x’                 X

设置图片的大小和保存

 from matplotlib import pyplot as pltimport randomx = range(2,20,2) # x轴的位置y = [random.randint(15, 30) for i in x]# 设置图片的大小'''figsize:指定figure的宽和高,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张'''# 设置画布对象plt.figure(figsize=(20,8),dpi=80)plt.plot(x,y) # 传入x和y, 通过plot画图# 保存(注意:要放在show的上面,plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。)plt.savefig('./t1.png')#./表示放在当前python文件的目录plt.show()# 图片的格式也可以保存为svg这种矢量图格式,这种矢量图放在网页中放大后不会有锯齿# plt.savefig('./t1.svg')

x轴的数值,使用range(),step为2,不包括20;

y轴的数值是一个列表表达式,由随机数产生,import random之后,randint产生随机整数,范围是15-30。“for i in x”是一个循环,作用是表明y轴数值产生随机数的次数,次数由x轴上数值的个数决定。

运行结果:

cec6833fefd4d0f16c38dca25c7ff70d.png

绘制x轴和y轴的刻度

bae95020f542d8b7272693b63e94cbdc.png

在设置Y轴标签时,标签数值的取值范围range(min(y),max(y)+1),这里min()和max()时是函数,分别取y中的最小和最大值,由于range函数不包集合右边的值,故加1。plt.yticks(range(min(y),max(y)+1),y_ticks_label)中,y_ticks_label表示y轴刻度产生的次数。

设置显示中文

matplotlib只显示英文,无法显示中文,需要修改matplotlib的默认字体。通过模块font_manager使用中文字体可以解决。

以表示两个小时内心脏每分钟跳动变化为例,x轴需要加上标题“时间”,y轴“次数”,图像标题“每分钟跳动次数”,如下图所示:

3b8d521d9671f3fba8755ffe4ecedbe2.png

一图多线

f41e54e405c892e0d7bb3b58da7164eb.png

拓展部分:一图多个坐标系

 # 方法add_subplot:给figure新增子图# 这里引进的科学计算库Numpy,把它看作一个[列表]即可,目的是要使用log方法画log对数函数。import numpy as npfrom matplotlib import pyplot as pltx = np.arange(1, 100) #与range()相同#新建figure画布对象,三个坐标轴(子图)建立在同一个画布上fig=plt.figure(figsize=(20,10),dpi=80)#利用画布对象,在上面放置三个坐标系#新建子图1ax1=fig.add_subplot(2,2,1)ax1.plot(x, x)#新建子图2ax2=fig.add_subplot(2,2,2)ax2.plot(x, x ** 2) #x的二次方,如果是x**3是x的三次方ax2.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)#新建子图3ax3=fig.add_subplot(2,2,3)ax3.plot(x, np.log(x))plt.show()

在这里解释一下add_subplot(2,2,1)里的参数的含义。在一个画布上放置三个图,需要排列位置。

首先将一张图,分成两列,再分成两行,总共划分出四个格子,子图1按照从左到右从上到下的顺序放在第一个格子里。

运行结果:

478c7748f1b97f030c5fe9cc954ebbf7.png

拓展部分:设置坐标轴范围

a3658ad32c38ca7b42d43ff1708713e3.png

291a95e6103dfbfeea8ae4023041436a.png

打卡格式

6eb3e1b0d2a37abb0a434631d618b785.png

小作业

  • 1、说出你理解的五种常用图像的特点,你有没有地方需要用得到呢?。
  • 2、运用Matplotlib,自己编数据设计样式,绘制一幅自己的折线图。

aff295fd4656973227ea70f919f70850.png

请添加__小编__,回复关键词:[数据可视化],

6a198dcd2ceb58f32db3497c109fb605.png

-今日互动-

你学会了吗?欢迎文章下方留言互动5ab0139cbf0cf67facb4bbc2718c64c6.png

如果对你有帮助的话

❤️来个「转发朋友圈」和「在看」,是最大的支持❤️

原网址: 访问
创建于: 2023-01-12 16:38:10
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论