Python之数据分析(坐标刻度定位器、散点图、柱状图、颜色区域填充)
文章目录
- 写在前面:
- 一、坐标刻度定位器
- 二、散点图
- 三、柱状图
- 四、颜色填充
写在前面:
- import numpy as np
- import matplotlib.pylab as mp
- 因此文章中的np就代表numpy库,mp就代表pylab绘图库
一、坐标刻度定位器
1、步骤
1)创建:定位器对象 = mp.XXXLocator(…)
2)获得坐标轴:ax = mp.gca()
3)主刻度:ax.xaxis.set_major_locator(定位器对象) # 例如厘米
4)次刻度:ax.xaxis.set_minor_locator(定位器对象) # 例如毫米
2、各种定位器
- mp.NullLocator():无刻度
- mp.MaxNLocator(nbins=5, steps=[1,3,5,7,9]):最多5个等分刻度,分别是1,3,5,7,9
- mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10]):直接将刻度放上去
- mp.AutoLocator():自动刻度,不需要提供参数(方便)
- mp.IndexLocator(offset=0.5, base=1.5):索引定位器(好用),一参是偏移量,二参是间隔大小
- mp.MultipleLocator():(好用)默认参数为1,就是主刻度间隔,可以用数字设定参数;次刻度默认为主刻度/10
- mp.LinearLocator(numticks=21):线性定位器,参数为分成多少个等分,此处为21等分
- mp.LogLocator(base=2, subs=[1.0]):对数定位器,间距不断扩大,取2的-1次方,2的0次方,2的1次方,2的2次方……
3、练习代码
import numpy as np
import matplotlib.pylab as mpmp.figure(facecolor="lightgray") # 创建窗口# 存储定位器名称
locators=['mp.NullLocator()', 'mp.MaxNLocator(nbins=5, steps=[1,3,5,7,9])', 'mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10])', 'mp.AutoLocator()', 'mp.IndexLocator(offset=0.5, base=1.5)', 'mp.MultipleLocator()','mp.LinearLocator(numticks=21)', 'mp.LogLocator(base=2, subs=[1.0])',
]n_locators = len(locators) # 获取定位器长度# 遍历每一个定位器来创建子图
for i, locator in enumerate(locators):mp.subplot(n_locators, 1, i+1) # 创建行数为定位器长度,列数为1,图号为i+1的子图mp.xlim(0, 10) # 水平方向是从0到10mp.ylim(-1, 1) # 垂直方向是-1到1mp.yticks(()) # 隐藏y坐标轴ax = mp.gca() # 获取坐标轴ax.spines['left'].set_color("none") # 将左坐标轴透明ax.spines['top'].set_color("none") # 将上坐标轴透明ax.spines['right'].set_color("none") # 将右坐标轴透明ax.spines['bottom'].set_position(('data', 0)) # 将底坐标轴设置数据坐标为0的位置# 设置主刻度ax.xaxis.set_major_locator(eval(locator)) # 以遍历到的定位器为朱刻度# 设置次刻度ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) # 以0.1为最小间隔距离# 随便画个图mp.plot(np.arange(11), np.zeros(11), c='none') # 0到10位横坐标,10个0位纵坐标,颜色为空# 用文字标识一下定位器mp.text(5, 0.3, locator[3:], ha='center', size=12)mp.tight_layout() # 紧凑显示
mp.show() # 显示图表
二、散点图
1、方法
mp.scatter(水平坐标数组, 垂直坐标数组, s=点的大小, c=分布数据, cmap=颜色映射方式, alpha=透明度(0到1), marker=点的形状)
2、测试代码
import numpy as np
import matplotlib.pylab as mp# 获得1000个使用随机作为服从正态分布的数据样本(数组)
n = 1000
x = np.random.normal(0, 1, n) # 一参为标准差,二参为分布平坦性(越大越分散,越小越集中),三参为点的个数
y = np.random.normal(0, 1, n)
d = np.sqrt(x ** 2 + y ** 2) # 根号下 x平方加y平方 作为点到正态中心的距离# 绘制图像
mp.figure("Scatter", facecolor="lightgray")
mp.title("Scatter", fontsize=20) # 图像标题
mp.xlabel('X', fontsize=14) # X、Y刻度显示的文本
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10) # 刻度标签大小
mp.grid(linestyle=":") # 网格线
mp.scatter(x, y, s=60, c=d, cmap="jet_r", alpha=0.5, marker='*') # marker常用D,*,s,默认圆点omp.show()
三、柱状图
1、方法
mp.bar(水平坐标数组, 高度数组(有正负), ec=边缘颜色, fc=填充颜色, label=标签文本, alpha=透明度 )
2、测试代码
import numpy as np
import matplotlib.pylab as mpn = 12
x = np.arange(n)# uniform:均匀分布,在0.5和1.0之内产生n个随机数
y1 = (1 - x/n)* np.random.uniform(0.5, 1.0, n) # (1 - x/n)为了方便显示
y2 = (1 - x/n)* np.random.uniform(0.5, 1.0, n)# 图像属性
mp.figure("Bar", facecolor="lightgray")
mp.title("Bar", fontsize=20) # 图像标题
mp.xlabel('X', fontsize=14) # X、Y刻度显示的文本
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10) # 刻度标签大小
mp.grid(axis='y', linestyle=":") # 网格线,并且只画与y相关联的
mp.xticks(x, x+1) # 设置横坐标刻度,位置为x的,显示数字为x+1
mp.ylim(-1.25, 1.25) # 设置纵坐标大小,-1.25到1.25# 绘制图像
mp.bar(x, y1, ec='white', fc='dodgerblue', label="Sample 1")
# 分别取y1中的每个柱,并且在柱的上方显示文本,水平居中,垂直靠底
for _x, _y in zip(x, y1):mp.text(_x, _y, '%.2f'%_y, ha='center', va='bottom', size=8)mp.bar(x, -y2, ec='white', fc='dodgerblue', label="Sample 2", alpha=0.5)
for _x, _y in zip(x, y2):mp.text(_x, -_y - 0.015, '%.2f'%_y, ha='center', va='top', size=8) # _y取负号,-0.015表示不会靠的太近mp.legend()
mp.show()
四、颜色填充
1、方法
- mp.fill_between(水平坐标数组, 垂直坐标起点数组, 垂直坐标终点数组, 填充条件, color=颜色, alpha=透明度)
- 取从-π到π的999个点,作为横坐标:x = np.linspace(-np.pi, np.pi, 1000)
2、测试代码
import numpy as np
import matplotlib.pylab as mpn = 1000
x = np.linspace(0, 8*np.pi, n)
sin_y = np.sin(x)
cos_y = np.cos(x/2)/2# 图像属性
mp.figure("Fill", facecolor="lightgray")
mp.title("Fill", fontsize=20) # 图像标题
mp.xlabel('X', fontsize=14) # X、Y刻度显示的文本
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10) # 刻度标签大小
mp.grid(linestyle=":") # 网格线# 绘制图像
mp.plot(x, sin_y, c='dodgerblue', label=r"$y=sin(x)$")
mp.legend() # 显示图例
mp.plot(x, cos_y, c='orange', label=r"$y=\frac{1}{2}cos(\frac{x}{2})$")
mp.legend()# 填充颜色
# 起点在cos,终点在sin,且条件是cos<sin
mp.fill_between(x, cos_y, sin_y, cos_y<sin_y, color="yellow", alpha=0.5)
# 条件是cos>sin
mp.fill_between(x, cos_y, sin_y, cos_y>sin_y, color="lightblue", alpha=0.5)mp.show()
Python之数据分析(坐标刻度定位器、散点图、柱状图、颜色区域填充)相关推荐
- python散点图坐标刻度_python – 散点图中的轴范围
我一直在使用下面的代码来绘制运行4个函数所花费的时间. x轴表示执行次数,而y轴表示花费的时间 运行一个功能. 我想知道你是否可以帮我完成以下任务: 1)设置x轴的极限,以便仅显示正值(x表示 每个函 ...
- python绘制训练结果曲线图和散点图、解决坐标刻度标签重复问题 、利用训练标准输出流绘制
python绘制训练结果曲线图和散点图.解决坐标刻度标签重复问题 .利用训练标准输出流绘制 python绘制训练结果图 训练结果标准输出流 删除标准输出流中多余内容 正则表达式提取数据 绘制曲线图和散 ...
- 计算机excel柱状图刻度单位,如何设置excel图表的坐标刻度和单位-excel 柱状图 坐标 区间刻度...
如何改变excel图表的坐标最小刻度值? 选中纵坐标,按Ctrl 1,在弹出的对话框中左侧选择坐标轴选项,一般默认就是,再看右侧,选择次要刻度单位为固定,再在下方的次要刻度线类型中选择外部,确定退出就 ...
- 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)
1.3 常见图形及绘制 matplotlib可以绘制折线图.散点图.柱状图.直方图.饼图 1.3.1 常见图形种类及意义 折线图:以折线的上升或下降来表示统计量的增减变化的统计图 特点:可以显示数据的 ...
- Python地信专题 | 基于geopandas的空间数据分析-坐标参考系篇
文章来源于Python大数据分析,作者费弗里 本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在 ...
- python(matplotlib3)——ticks(坐标刻度)能见度
文章目录 前言 ticks(坐标刻度)能见度 前言 来自 莫烦python的总结. ticks(坐标刻度)能见度 x = np.linspace(-3,3,50) y = 0.1*xplt.figur ...
- Python可视化中Matplotlib(4.三种设置样式方法、设置坐标刻度以及标签、设置显示出特殊字符)
1.三种设置方式 (1)向方法传入关键字参数 上一节已经总结过,一直在使用 (2)对实例使用一系列的setter方法 具体的方法直接看代码 import matplotlib.pyplot as pl ...
- 《利用python进行数据分析》读书笔记
<利用python进行数据分析>是一本利用python的Numpy.Pandas.Matplotlib库进行数据分析的基础介绍,非常适合初学者. 重要的python库 NumPy http ...
- 《利用Python 进行数据分析》第八章:绘图和可视化
对<利用Python 进行数据分析>(Wes Mckinney著)一书中的第八章中绘图和可视化进行代码实验.原书中采用的是Python2.7,而我采用的Python3.7在Pycharm调 ...
最新文章
- CentOS中怎样卸载旧版本Git并安装高版本Git
- [我的证书]一证一书,当思来之不易 半分半秒,恒念学无止步
- leetcode-最大子序和(动态规划讲解)
- html下拉表覆盖透明,css透明元素如何遮挡住fixed元素
- android 几个快速编译images指令
- 华硕笔记本返厂维修流程_Intel EVO严苛认证!14款极品笔记本上市:秒光|英特尔|笔记本|华硕|宏碁|惠普|微星...
- 计算机共享修复方法,打印机无法共享怎么办,教您修复打印机共享问题
- vue项目px自动转rem适用于pc端
- 【jQuery进阶】子菜单插件Slight Submenu
- 两个自然数互素(relatively prime)
- 计算机专业考研410分,从一个中专生到考研410分的历程
- python有像sumif的函数吗_最全的SUMIF函数用法,小白秒变老司机
- 烧写自定义ArduPilot到自定义的开发板
- java mocked_java如何使用Mockito?
- Unity3D 屏幕点击特效
- Linux系统配置及服务管理_02章_文件和用户管理
- Python中的字符串下标
- 用python绘制玫瑰花
- txfont与\texttt冲突问题
- Android 应用A开启应用B
热门文章
- pythonfor循环语句例子_简单的python循环知识
- php临时文件删除,php删除临时文件的代码示例
- 新疆特岗计算机考试题,2020新疆特岗教师笔试资料领取(小学信息技术)
- android 异步图片加载 开源,异步加载图片BitmapFun分析
- 文件管理英文html,Directory Opus
- 证书服务器web注册,无法通过 Web 注册请求证书 - Windows Server | Microsoft Docs
- python delete_rows,Python:如何刪除以特定字符結尾的行?
- 玩转 SpringBoot 2 快速整合 Filter 注解版
- fabric监控linux自动化运维,自动化运维之Fabric系列(一)小试牛刀
- c面向对象 java_JAVA基础--面向对象08