解决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中使用mechanize模块模拟浏览器功能
May 05 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
python实现在函数中修改变量值的方法
Jul 16 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
Python实现自动签到脚本功能
Aug 20 Python
python requests模块的使用示例
Apr 07 Python
Pytest中skip和skipif的具体使用方法
Jun 30 Python
Python Pygame实战之塔防游戏的实现
Mar 17 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
详解JavaScript函数
2015/12/01 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
python正则表达式re模块详解
2014/06/25 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
学生会主席竞聘书
2014/03/31 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
多媒体教室标语
2014/06/26 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
nginx 添加http_stub_status_module模块
2022/05/25 Servers