数据可视化的粗略学习
数据可视化
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(