matplotlib横坐标从大到小_Python数据分析:Matplotlib
终于到了python数据分析三剑客的最后一课:Matplotlib,一个专门用于绘制图形的库,话不多说,直接进入主题。
内容目录
- 图形的构成
- plot样式风格
- plot保存图像
- 各种图形绘制
1 图形的构成
1.1 Figure
在绘制图形之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。
import matplotlib.pyplot as plt # 约定俗成的写法from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题fig = plt.figure()
plt.figure的参数:(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
- num: 图像编号或名称,数字为编号 ,字符串为名称
- figsize: 指定figure的宽和高,单位为英寸
- dpi: 参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80, 1英寸等于2.5cm,A4纸是 21*30cm的纸张
- facecolor: 背景颜色
- edgecolor: 边框颜色
- frameon: 是否显示边框
fig = plt.figure(num="hakg",figsize=(10,5),facecolor='g')
ax1 = fig.add_subplot(111)
ax1.set(xlabel="x",ylabel='y')
plt.plot(x,y)
这里只是为了展示figure的参数,我知道很丑
1.2 subplot
使用subplot可以在一个界面中显示多张图像。
参数:subplot(nrows,ncols,num,sharex,sharey,subplot_kw,**fig_kw)
- nrows: subplot的行数
- ncols: subplot的列数,行X列就是被分成多少个图像区域
- num: 目前该图像位于第几个位置
- sharex:所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有的subplot)
- sharey:所有subplot应该使用相同的Y轴刻度(调节ylim将会影响所有的subplot)
- subplot_kw:用于创建各subplot的关键字字典
- **fig_kw:创建figure时的其他关键字
plt.subplot(ijn) i代表划分为几行j为几列,n是指目前在第几个子区域内,这里也可以使用fig.subplot(ijn)
fig = plt.figure()
ax1 = fig.add_subplot(221) # 划分为2行2列四个区域,这是第一个区域,以下以此类推
ax1.set(title="标题1",ylabel='y',xlabel='x')
ax2 = fig.add_subplot(222)
ax2.set(title="标题2",ylabel='y',xlabel='x')
ax3 = fig.add_subplot(223)
ax3.set(title="标题3",ylabel='y',xlabel='x')
ax4 = fig.add_subplot(224)
ax4.set(title="标题4",ylabel='y',xlabel='x')
plt.show()
数据区域的划分顺序为:先行后列
1.3 Axes 轴
在拥有了Figure对象之后,我们还需要有对应的轴 和 标题
xlabel x轴 水平轴标签
ylabel y轴 垂直轴标签
title 标题
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set(title="计算",ylabel='y',xlabel='x')
plt.show()
1.4 ticks 刻度
自定义设置x轴和y轴的刻度,但是这个功能一般很少用,默认的结果就能满足需求
x = [1,2,3,4]
y = [5,6,7,8]
plt.xticks([1,2,3,4]) # xticks x轴刻度
plt.yticks([5,6,7,8]) # yticks y轴刻度
plt.plot(x,y)
1.5 图例
plt.legend方法
常用参数:
- loc 图例的位置,默认是:upper right
- ncol 图例分几列展示,默认为1
- fontsize 图例字体大小
loc分类介绍
fontsize:{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
详细参数参考如下(了解):
两种方式
- 分别在plot函数中增加label参数,再调用plt.legend()方法显示
- 直接在legend方法中传入字符串列表
第一种方式
import numpy as np
x = np.linspace(-np.pi,np.pi,num=100)
y = x**2
plt.plot(x,y,label='dist')
plt.plot(x-3,y+2,label='temp')
plt.legend()
第二种方式
import numpy as np
x = np.linspace(-np.pi,np.pi,num=100)
y = x**2
plt.plot(x,y,c='r')
plt.plot(x-3,y+2)
plt.legend(["dist","temp"],loc="upper left",ncol=2)
1.6 网格线
plt.grid()
参数:(b, which, axis, color, linestyle, linewidth,**kwargs)
- b: True 或 False True就是显示,False就是不显示
- which: 'major', 'minor', 'both',默认是both
- axis: ‘both’,‘x’,‘y’,可以选择 y x,也就是指定选择x显示网格线或者y显示网格线,但是我尝试了之后发现不起作用,暂且记住这个功能吧
- color: 颜色
- linestyle: 线条
- linewidth: 线条宽度
x = [1,2,3,4]
y = [5,6,7,8]
x1 = [10,10,12,12]
y1 = [20,15,10,6]
plt.plot(x,y,x1,y1)
plt.grid(True)
1.7 标签内容
plt.text()
参数: (x, y, s, weight="bold", color="b")
- x: 注释文本内容或者数据标签所在位置的横坐标
- y: 注释文本内容或者数据标签所在位置的纵坐标
- s:注释文本内容或者数据标签
- weight:注释文本内容的粗细风格
- color:注释文本内容的字体颜色
其中x和yq确定文本在图像中显示的位置
第一种情况,只显示文本内容
x = np.linspace(0.05, 10, 1000)
y = np.sin(x)plt.plot(x, y, ls="-.", lw=2, c="c", label="plot figure")
plt.legend()
plt.text(3.10, 0.09, "y=sin(x)", weight="bold", color="b")
plt.show()
第二种情况,数据标签
例如:柱状图,我们需要在每个柱上显示标签,因此这里操作有点麻烦,需要用到循环
示例
import pandas as pd
data = pd.read_excel('../data/picture_data.xlsx')
data.head()
计算每个部门的人数
dep = data["部门"].value_counts()
b = plt.bar(dep.index,dep.values)
plt.yticks(range(10))
for i in b:plt.text(i.get_x() + i.get_width() / 2,i.get_height()+0.1,str(i.get_height()))
# i.get_x() 获取每个柱型的x轴位置
# i.get_width() 每个柱形的宽度
# i.get_height() 柱形的高度
不得不吐槽一下,这个数据标签,添加起来真心麻烦
2 plot的风格和样式
2.1 color 颜色
支持以下几种形式
- 1 颜色名称
color颜色,不同字母代表不同颜色,用color或者c
- 2 HTML十六进制字符串 例如:color=‘#FF0000’ 红色
- 3 支持RGB 归一化到[0,1] 例如:color=(0.3,0.3,0.3),如果你使用的是(234,23,14)需要分别除以256,归一化之后才能使用。
2.2 marker 图标
^就是三角形,o就是圆点,+就是加号型
如果上面看不太明白的话,可以参考这个,也可以自己手动试一试
符号 对应的图形
o 圆点
p 五边形(看起来也有点像圆点)
h 六边形(看起来也有点像圆点)
H 旋转六边形(两顶点在线上)
d 细菱形
D 菱形
s 正方形
^ 上三角
v(小v) 下三角
< 左三角
> 右三角
1 丫(这里称之为下箭头)
2 上箭头
3 左箭头
4 右箭头
, 像素
+ 加号
x 叉形
X 粗叉形
- 水平线
2.3 linestyle 线条
2.4 大小
- linewidth 对于linestyle的线条的宽度设置,默认为2
- markersize 对于marker图标的大小设置,默认为12
2.5 透明度
alpha参数 [0,1]之间
3 plot保存图像
plt.savefig() 保存图像
参数: (fname, dpi=None, facecolor='w', edgecolor='w',orientation='portrait', papertype=None, format=None, transparent=False, bbox_inches=None, pad_inches=0.1, frameon=None)
- fname 保存的文件位置+文件名,字符串形式
- dpi 像素
其余的以后用到再研究,基本主要用到的是fname
import numpy as np
x = np.linspace(-np.pi,np.pi,num=100)
y = x**2
plt.plot(x,y)
plt.plot(x-3,y+2)
plt.legend(["dist","temp"])
plt.savefig('./pi')
4 常用图形
4.1 折线图
plt.plot()参数:(x, y, color='green', marker='o', linestyle='dashed',
linewidth=2, markersize=12)
- x和y对应横轴和纵轴的数据
- color颜色,不同字母代表不同颜色
- marker 显示不同的图标
- linestyle 不同的线
- linewidth 对于linestyle的线条的宽度设置,默认为2
- markersize 对于marker图标的大小设置,默认为12
举个例子
x = [1,2,3,4]
y = [5,6,7,8]
plt.subplot(221)
plt.plot(x,y,c='r')
plt.subplot(222)
plt.plot(x,y,c='g',marker='o',linestyle="--")
plt.subplot(223)
plt.plot(x,y,'m^')
plt.subplot(224)
plt.plot(x,y,'y',linestyle=':',linewidth=6)
4.2 柱状图
plt.bar()
import pandas as pd
data = pd.read_excel('../data/picture_data.xlsx')
data.head()
需求1:绘制每个部门的人数总和
dep = data["部门"].value_counts()
b = plt.bar(dep.index,dep.values)
plt.yticks(range(10))
for i in b:plt.text(i.get_x() + i.get_width() / 2,i.get_height()+0.1,str(i.get_height()))
4.3 条形图
plt.barh()
参数:(y, width, height, left, *, align='center')
需求:绘制每个部门的人数总和
b = plt.barh(dep.index,dep.values)
plt.xticks(range(10))
for i in b:plt.text(i.get_width()+0.1,(i.get_y() + i.get_height() / 2),str(i.get_width()))
4.4 直方图
plt.hist()
参数
(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, hold=None, data=None, **kwargs)
- x:必选参数,绘图数据
- bins:直方图的长条形数目,可选项,默认为10
- normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
- facecolor:长条形的颜色
- edgecolor:长条形边框的颜色
- alpha:透明度
sale = data['实发工资']
plt.hist(sale)
2.5 饼图
plt.pie()
参数;(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
- startangle:参数设置饼图的起始角度
- explode:每一块顶点距离圆心的长度
- autopct:设置比例值,小数位数保留几位
- labeldistance: 设置标签离圆心的距离
plt.pie(dep,labels = dep.index,autopct='%.2f%%')
2.6 散点图
plt.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, hold=None, data=None, **kwargs)
h = data.pivot_table(index="部门",aggfunc={"员工姓名":"count","实发工资":"sum"})
plt.scatter(h.员工姓名,h.实发工资)
写到头皮发麻,下回继续,实在没有想到一个matplotlib竟然也有这么多东西要整理。
推荐阅读:
ailsa:Python数据分析:Pandas之DataFramezhuanlan.zhihu.com
ailsa:python数据分析:Pandas之Serieszhuanlan.zhihu.com
ailsa:Python数据分析:Numpy基础zhuanlan.zhihu.com
到这里为止的话,python数据分析的三大库已经全部整理完毕,之前从未觉得知识点有这么多,但是说实话,这些内容算是整理的比较细致了,大家可以当作手册来参考,加油吧!
matplotlib横坐标从大到小_Python数据分析:Matplotlib相关推荐
- python ppt 绘图_Python数据分析-Matplotlib绘图基础
本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...
- python选择排序从大到小_Python实现选择排序
一.选择排序简介 选择排序(Selection sort)是一种简单直观的排序算法.选择排序首先从待排序列表中找到最小(大)的元素,存放到元素列表的起始位置(与起始位置进行交换),作为已排序序列,第一 ...
- matplotlib柱状图上方显示数据_Python数据分析matplotlib可视化之绘图!
Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...
- python可视化直方图的x轴参数设置_Python数据分析matplotlib可视化之绘图
Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...
- matplotlib 横坐标少了一个点_比 matplotlib 效率高十倍的数据可视化神器
点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 来源:优达学城Udacity https://towardsdatascience.com/the-next-level-of- ...
- Python 数据分析——Matplotlib相关知识
Python 数据分析--Matplotlib相关知识 第五章 Matplotlib相关知识 -- 样式 文章目录 Python 数据分析--Matplotlib相关知识 前言 一.matplotli ...
- 数据分析--matplotlib 设置时间数据的刻度格式
数据分析--matplotlib 设置时间数据的刻度格式 数据分析--matplotlib 设置时间数据的刻度格式 数据分析–matplotlib 设置时间数据的刻度格式 在绘制图表时, 如果横轴是p ...
- 大数据分析——Matplotlib入门教程
文章目录 1.问题区 2. matplotlib.pyplot简介 1.Pyplot中的基础函数解析 3. 使用Matplotlib画图基本步骤 1.基础方法解析 : 2.基础参数解析: (1)Lin ...
- python画小汽车代码_Python实战小程序利用matplotlib模块画图代码分享
Python中的数据可视化 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件. 实战小程序: ...
最新文章
- Android inline hook手记
- 热电偶单片机代码c语言,基于STC12C5A60S2单片机的恒温箱设计-LCD1602-热电偶(电路图+程序源码)...
- 【python】抄写大神的百度贴吧代码
- 不关注公众号可以获取openid吗_微信公众号粉丝迁移
- linux查询机器信息,linux_机器信息查询
- webview是什么东西_做性能优化前需要考虑什么?
- 给控件做数字签名之二:生成证书文件
- 新安装的centos使用ifconfig无效或者无法使用的解决办法
- 高效办公|用一套键鼠控制两台电脑解决方案
- 《菜菜的机器学习sklearn课堂,tomcat架构解析pdf
- WordPress小程序搭建之免费开源小程序
- Python开源机器学习项目实战
- Towards Fine-Grained Prosody Control for Voice Conversion 论文理解
- 1.UITextField使用详解
- 新版微信支持鸿蒙os,微信突然宣布!“新功能”全面爆发,鸿蒙OS措手不及
- CentOS7安装RabbitMQ(解决guest用户无法登录问题)
- 轮换对称性实质 和差化积公式之sinθ+cosθ推导 rd原理,二重积分坐标系转化为什么多了个r; 二重积分几何意义: 二重积分物理意义: 二重积分求导:
- 计算机专业英语求职自我介绍,计算机专业英语面试自我介绍
- 银河麒麟禁止抓屏printScreen
- selenium 鼠标悬停事件