解决Python Matplotlib绘图数据点位置错乱问题


Posted in Python onMay 16, 2020

在绘制正负样本在各个特征维度上的CDF(累积分布)图时出现了以下问题:

解决Python Matplotlib绘图数据点位置错乱问题

问题具体表现为:

1.几个负样本的数据点位置倒错

2.X轴刻度变成了乱七八糟一团鬼东西

最终解决办法

造成上述情况的原因其实是由于输入matplotlib.plot()函数的数据x_data和y_data从CSV文件中直接导入后格式为string,因此才会导致所有数据点的x坐标都被直接刻在了x轴上,且由于坐标数据格式错误,部分点也就表现为“乱点”。解决办法就是导入x,y数据后先将其转化为float型数据,然后输入plot()函数,问题即解决。

解决Python Matplotlib绘图数据点位置错乱问题

补充知识:matplotlib如何在绘制时间序列时跳过无数据的区间

其实官方文档里就提供了方法,这里简单的翻译并记录一下.

11.1.9 Skip dates where there is no data
When plotting time series, e.g., financial time series, one often wants to leave out days on which there is no data, e.g., weekends.
By passing in dates on the x-xaxis, you get large horizontal gaps on periods when there is not data.

The solution is to pass in some proxy x-data, e.g., evenly sampled indices, and then use a custom formatter to format these as dates.
The example below shows how to use an ‘index formatter' to achieve the desired plot:

解决方案是通过传递x轴数据的代理,比如下标,

然后通过自定义的'formatter'去取到相对应的时间信息

manual内示例代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.ticker as ticker

#读数据
r = mlab.csv2rec('../data/aapl.csv')
r.sort()
r = r[-30:] # get the last 30 days
N = len(r)
ind = np.arange(N) # the evenly spaced plot indices
def format_date(x, pos=None):
 #保证下标不越界,很重要,越界会导致最终plot坐标轴label无显示
 thisind = np.clip(int(x+0.5), 0, N-1)
 return r.date[thisind].strftime('%Y-%m-%d')

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(ind, r.adj_close, 'o-')
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
fig.autofmt_xdate()
plt.show()

示例:

同样一段数据上为原始,下为去掉无数据间隔区间

解决Python Matplotlib绘图数据点位置错乱问题

import pandas as PD
import numpy as NP
import matplotlib.pyplot as PLT
import matplotlib.ticker as MTK

file = r'vix_series.csv'
df = PD.read_csv(file, parse_dates=[0, 2])
#用下标代理原始时间戳数据
idx_pxy = NP.arange(df.shape[0])
#下标-时间转换func
def x_fmt_func(x, pos=None):
 idx = NP.clip(int(x+0.5), 0, df.shape[0]-1)
 return df['datetime'].iat[idx]
#绘图流程
def decorateAx(ax, xs, ys, x_func):
 ax.plot(xs, ys, color="green", linewidth=1, linestyle="-")
 ax.plot(ax.get_xlim(), [0,0], color="blue", 
   linewidth=0.5, linestyle="--")
 if x_func:
  #set数据代理func
  ax.xaxis.set_major_formatter(MTK.FuncFormatter(x_func))
 ax.grid(True)
 return

fig = PLT.figure()
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
decorateAx(ax1, df['datetime'], df['vix_all'], None)
decorateAx(ax2, idx_pxy, df['vix_all'], x_fmt_func)
#优化label显示,非必须
fig.autofmt_xdate()
PLT.show()

很多时候乱翻google还不如好好通读官方manual…

以上这篇解决Python Matplotlib绘图数据点位置错乱问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中删除文件的程序代码
Mar 13 Python
python 排列组合之itertools
Mar 20 Python
详解Python爬虫的基本写法
Jan 08 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
通过python爬虫赚钱的方法
Jan 29 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
Python日志器使用方法及原理解析
Sep 27 Python
Python中Selenium模块的使用详解
Oct 09 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 #Python
解决echarts中饼图标签重叠的问题
May 16 #Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 #Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 #Python
Python如何使用PIL Image制作GIF图片
May 16 #Python
pyecharts调整图例与各板块的位置间距实例
May 16 #Python
通过Python实现一个简单的html页面
May 16 #Python
You might like
php懒人函数 自动添加数据
2011/06/28 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
求职简历推荐信范文
2013/12/02 职场文书
优秀护士先进事迹
2014/05/08 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
检讨书格式范文
2015/05/07 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
使用python求解迷宫问题的三种实现方法
2022/03/17 Python