300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 3.Matplotlib数据可视化基础(上)(pyplot rc参数 散点图 折线图)

3.Matplotlib数据可视化基础(上)(pyplot rc参数 散点图 折线图)

时间:2020-11-17 04:52:06

相关推荐

3.Matplotlib数据可视化基础(上)(pyplot rc参数 散点图 折线图)

笔记说明:本文是我的学习笔记,大部分内容整理自黄红梅,张良均等.Python数据分析与应用[M].北京:人民邮电出版社,:52-77.还有部分片断知识来自网络搜索补充。

可视化这块的内容我以后会专门学习一本参考书然后整理笔记的,现在仅仅是整理上述参考书的一个章节的基础知识。

注:写在最前面。这块知识是可视化这一大块的内容,很多、很细致,我在整理这个笔记的时候就会不自觉一直在网上搜索更多的知识,对我现阶段而言太浪费时间了,因为我的主要方向不是做可视化的,所以我在后面的笔记里面仅仅呈现出开头提到的那个参考工具书的第三章可视化基础的笔记整理

关于可视化更详细的部分在以后我系统学习完我的知识之后回过头我会整理一本专门讲python可视化的工具书的笔记的。书已经买好了,就是!!暂时不会看那本书!!

推荐博客:这个人的博客/sinat_36219858/article/details/79800460

文章目录

0.本文的数据1.绘图基础语法与常用参数1.1 pyplot1.1.1创建画布和子图1.1.2 添加画布内容1.1.3 保存与显示图形上个栗子!1.2 设置动态rc参数2.散点图和折线图2.1 散点图一个栗子!

0.本文的数据

CSDN的数据不可以免费共享,至少要一个金币,有能力的就去下载一下数据下载链接CSDN数据。不方便的底下头评论留言,留下邮箱号,我看到之后就会把数据发给你,或者你可以在这本书的出版社网站人民邮电出版社教育社区或者“泰迪杯数据挖掘比赛”泰迪杯数瑞思的网站上找这本书的附带资源,都是免费下载的。

1.绘图基础语法与常用参数

1.1 pyplot

pyplot绘图的方式类似R语言里面的ggplot,是建立多个图层来完成同一幅图中绘制多个图形。

因此需要在每建立一个图层之后就添加标题、x轴、x轴的刻度范维、y轴、y轴的刻度范围,然后添加图形,添加图例,保存显示。

1.1.1创建画布和子图

在一幅图时可以省略plt.figure:空白画布figure.add_subplot(‘行’,‘列’,‘选中的子图编号’)

1.1.2 添加画布内容

具体参数详见help(func)plt.title:标题plt.xlabel:x轴名称plt.ylabel:y轴plt.xlim:x轴的范围plt.ylim:y轴范围plt.xticks:第一个参数为范围,数组类型;第二个参数是标签,第三个是控制标签,

遵循text协议,具体参照matplotlib.textplt.yticks:同上plt.legend:图例

1.1.3 保存与显示图形

plt.savafig:保存plt.show:在本机显示

上个栗子!

## 一个图help(plt.plot)import numpy as npimport matplotlib.pyplot as pltdata = np.arange(11)plt.title(u'随便画一条看看')plt.xlim((0,11))plt.xlabel(u'X轴名字')plt.ylim((0,105))plt.ylabel(u'y轴名字')plt.xticks(ticks=range(0,12))plt.yticks(range(0,105,10))plt.plot(data,data**2)plt.legend('y=x^2')plt.savefig('D:\\codes\\python\\image\\plot1.png')plt.show()## 两个图# -*- coding: utf-8 -*-rad=np.arange(0,np.pi*2,0.01)p1=plt.figure(figsize=(15,7),dpi=111)pic1=p1.add_subplot(1,2,1) #一行两列的第一幅图plt.title(u'会不会乱码?')plt.xlabel('x')plt.xlim((0,1))plt.xticks(np.arange(0,1.1,0.1))plt.ylim((0,1))plt.ylabel('y')plt.yticks(np.arange(0,1.1,0.1))plt.plot(rad,rad**2)plt.plot(rad,rad**4)plt.plot(rad,rad*0+0.5) ## 第二个y参数一定要包含x。只写0.5的话,画不出来这条直线plt.legend(['y=x^2','y=x^4'])pic2=p1.add_subplot(1,2,2) #一行两列的第一幅图plt.title('sin & cos')plt.xlabel('x')plt.xlim((0,np.pi*2))plt.xticks(np.arange(0,np.pi*2+1,np.pi/2))plt.ylim((-1,1))plt.ylabel('y')plt.yticks(np.arange(-1,1.5,0.5))plt.plot(rad,np.sin(rad))plt.plot(rad,np.cos(rad))plt.legend(['sin','cos'])plt.savefig('D:\\codes\\python\\image\\plot2.png')plt.show()

中文还是乱码,开头我已经声明utf8编码了~~

plt.plot(rad,rad*0+0.5)第二个y参数一定要包含x。只写0.5的话,画不出来这条直线

1.2 设置动态rc参数

rc参数修改之后,绘图时使用的默认参数就会发生改变

x=np.arange(0,np.pi*6+0.1,0.1)y=np.sin(x)plt.plot(x,y,label='$sin(x)$')# $ 的作用就是告诉电脑这是个字符串plt.title("sin")plt.rcParams['lines.linestyle']='--'plt.savefig('D:\\codes\\python\\image\\plot4.png') plt.show()

这边有个很有意思的逻辑,就是其实这个savefig并不是必须要有的,但是一旦写好,

plt.show出来的就是上述名字的照片,本例题就是plot4,然后修改rc参数后,

show出来的图片并不会更改,依然是plot4,所以修改完rc参数之后要修改照片的名字,储存新的照片。。

划重点!中文的支持

pyplot字体不支持中文,不是编码的问题,需要设置一个参数

x=np.arange(0,np.pi*6+0.1,0.1)y=np.sin(x)plt.plot(x,y,label='$sin(x)$')# $ 的作用就是告诉电脑这是个字符串plt.title("sin这个中文就可以显示了")plt.rcParams['lines.linestyle']='-.'plt.rcParams['font.sans-serif']='SimHei'#设置中文字体plt.rcParams['axes.unicode_minus']=False #防止坐标轴中文显示错误plt.show()

2.散点图和折线图

2.1 散点图

help(plt.scatter)scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)

一个栗子!

import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=Falsedata=np.load("D:\\codes\\python\\国民经济核算季度数据.npz")name=data['columns']values=data['values']plt.figure(figsize=(9,7))plt.scatter(values[:,0],values[:,2],marker='o')np.max(values[:,2])plt.xlabel("年份")plt.ylabel("生产总值(亿元)")plt.ylim((0,225000))plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)# rotation标签旋转角度plt.title("2000~各季度国民生产总值散点图")plt.show()###绘制多个散点plt.figure(figsize=(9,7))plt.scatter(values[:,0],values[:,3],marker='o',c='red')plt.scatter(values[:,0],values[:,4],marker='D',c='green')plt.scatter(values[:,0],values[:,5],marker='>',c='blue')plt.xlabel('年');plt.ylabel('生产总值(亿)')plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)plt.title("打字好累啊,来回切换输入法")plt.legend(["一产业","二产业","三产业"])plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。