数据可视化的粗略学习

数据可视化

matplotlib

安装matplotlib

在linux下装matplotlib

<https://blog.csdn.net/qq_36321646/article/details/80207157

基本构架

运行matplolib:import matplotlib

import matplotlib.pyplot as plt//把pyplot重新命名为plt,打包。

plt.figure()//画图创建了一块画布,开设了一块内存来添加数据。

plt.plot([1,0,9],[4,5,6])//第一个参数是横坐标数据,第二个参数是纵坐标数据。

plt.show()//呈现代码。

matplotlib三层结构

1 容器层

  • 画板层(Canvas)
  • 画布层(Figure):plt.figure()
  • 画布层上有多个绘图区/坐标系:plt.subplots(),从而来创建多个绘图区,一个绘图区由横纵坐标构成。

2 辅助显示层

3 图像层

任务:画不同的图表,并设置图表的样式与颜色

【总结】

  • Canvas(画板)位于最底层,用户一般接触不到。
  • Figure(画布)建立在Canvas之上。
  • Axes(绘图区)建立在Figure之上。
  • 坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在Axes之上。

折线图

1.matplotlib.pyplot模块

matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图像(figure)的当前坐标系(axes)。

import matplotlib.pyplot as plt

2.折线图绘制与显示

例如:展现上海一周的天气,比如从星期一到星期日的天气温度

1)创建画布(容器层)

plt.figure()

2)绘制折线图(图像层)

plt.plot([1,2,3,4,5,6,7],[17,17,18,16,11,11,13])

3)显示图像

plt.show()

3.设置画布属性与图片保存

plt.figure(figsize=(),dpi=)

​ figsize:指定图的长宽(画布大小),例如长20、宽8,则figsize=(20,8)

​ dpi:图像的清晰度

​ 返回fig对象

plt.savefig(path)

plt.show()

4.完善原始折线图(辅助显示层)

【需求】画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度。

准备基础折线图

import random//随机数

1.准备数据x、y

x = range(60)

y_shanghai = [random.uniform(15,18) for i in x]//生成和x同样数量的范围在15到18之间的随机数。

2.创建画布

plt.figure(figsize=(20,8),dpi=80)

3.绘制图像

plt.plot(x,y)

准备x的刻度说明

x_label =["11点{}分".format(i) for i in x]

plt.xticks(x[::5],x_label[::5])//要与y轴刻度一一对应。

plt.yticks(range(0,40,5))//意思为显示0-40(左闭右开),每隔5显示出来(即显示0,5,10,15...)

4.显示图像

plt.show()

添加自定义x,y刻度

  • plt.xticks(x,**kwargs)

    x:要显示的刻度值

  • 若横坐标要显示x点x分,则可用

    ["11点{}分".format(i) for i in x]

5.完善原始折线图(图像层)

【需求】再添加一个城市的温度变化,即共调用两个plot。

得到的总代码

//准备数据x,y

x=range(60)

y_shanghai = [random.uniform(15,18) for i in x]

y_beijing = [random.uniform(1,3) for i in x]

//创建画布

plt.figure(figsize=(20,8),dpi=80)

//绘制图像

plt.plot(x,y_shanghai,color="r",linestyle="--",label="上海"//即可以改颜色与线条风格

plt.plot(x,y_beijing,label="北京")

//显示图例

plt.legend()

//修改x,y刻度

//准备x的刻度说明

x_label=["11点{}分".format(i) for i in x]

plt.xticks(x[::5],x_label[::5])

plt.yticks(range(0,40,5))#添加网格显示

plt.grid(linestyle="--",alpha=0.5)

//添加描述信息

plt.xlabel("时间变化")

plt.ylabel("温度变化")

plt.title("上海、北京11点到12点每分钟的温度变化状况")

//显示图

plt.show(

posted @ 2021-02-09 23:36  小滢小滢考第一名  阅读(196)  评论(0编辑  收藏  举报