Matplotlib / Pandas:使用时间序列放大图的一部分

用户名

我的任务很简单:我ts要绘制一个时间序列(2010年至2014年之间的欧元瑞士法郎每日汇率)。在该图中,我想通过放大显示某个时间间隔。但是,缩放后的窗口只是保持空白(请参见下面的代码)。此外,由于我不知道如何正确地将日期转换为matplotlib的内部整数表示形式,因此选择放大窗口的x范围会遇到问题。

在此先感谢您的帮助!

这是我的代码:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes 
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

# Load the time series
ts = pd.read_csv('./Data/EUR_CHF_Exchange_Rates/EUR_CHF_daily.csv',sep=';', parse_dates=['time'], index_col = 'time',decimal=',')
ts = ts['EUR/CHF']
ts = ts.sort_index(ascending=True)

# Plot
fig = plt.figure(figsize=(14,5))
ax = plt.axes()
ts.plot() # ts is my time series

# Label the axis
ax.set_xlabel('')
ax.set_ylabel('EUR/CHF')

#I want to select the x-range for the zoomed region. I have figured it out suitable values
# by trial and error. How can I pass more elegantly the dates as something like
# x1 = '2012-05-09'
# x2 = '2012-09-02'
x1 = 15439.0
x2 = 15588.0

# select y-range for zoomed region
y1 = 1.15
y2 = 1.25

# Make the zoom-in plot:
axins = zoomed_inset_axes(ax, 2, loc=1) # zoom = 2
axins.plot(ts)
axins.set_xlim(x1, x2)
axins.set_ylim(y1, y2)
plt.xticks(visible=False)
plt.yticks(visible=False)
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
plt.draw()
plt.savefig('daily_exchange_rates.pdf') # The zoomed window is empty!!!! 
尼古瓜罗

我从未使用过pandas,但我认为问题在于您要选择的范围axins.set_xlim(x1, x2),它们似乎超出了范围。我只是使用的绘图功能matplotlib并更改了范围,并且获得了具有缩放比例的图像。

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes 
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

# Load the time series
ts = pd.read_csv('EUR_CHF_daily.csv',sep=';', parse_dates=['time'], index_col = 'time',decimal=',')
ts = ts['EUR/CHF']
ts = ts.sort_index(ascending=True)

# Plot
fig = plt.figure(figsize=(14,5))
ax = plt.axes()
ax.plot(ts)

# Label the axis
ax.set_xlabel('')
ax.set_ylabel('EUR/CHF')

#I want to select the x-range for the zoomed region. I have figured it out suitable values
# by trial and error. How can I pass more elegantly the dates as something like
x1 = 1543.90
x2 = 1658.80

# select y-range for zoomed region
y1 = 1.15
y2 = 1.25

# Make the zoom-in plot:
axins = zoomed_inset_axes(ax, 2, loc=1) # zoom = 2
axins.plot(ts)
axins.set_xlim(x1, x2)
axins.set_ylim(y1, y2)
plt.xticks(visible=False)
plt.yticks(visible=False)
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
plt.draw()
plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matplotlib / Pandas:使用时间序列放大图的一部分

来自分类Dev

使用matplotlib返回图的一部分

来自分类Dev

python:如何通过鼠标事件删除轮廓图的一部分(matplotlib)

来自分类Dev

matplotlib中缺少对数图的一部分

来自分类Dev

将matplotlib标题的一部分加粗并使用其他颜色

来自分类Dev

仅使用matplotlib绘制3D图形的一部分

来自分类Dev

在python matplotlib中消除某些限制之外的圆的一部分?

来自分类Dev

在python matplotlib中消除某些限制之外的圆的一部分?

来自分类Dev

如何在Matplotlib中掩盖线的一部分

来自分类Dev

选择时间序列的一部分

来自分类Dev

选择时间序列的一部分

来自分类Dev

可以使用哪些算法从时间序列的一部分构建预测变量?

来自分类Dev

使用Matplotlib使用时间x轴绘制图表

来自分类Dev

时间相关图 matplotlib

来自分类Dev

金融时间序列的matplotlib图的嵌套循环

来自分类Dev

Matplotlib 时间序列图轨迹问题

来自分类Dev

求和设定端点之间的时间序列的一部分

来自分类Dev

删除颜色图的一部分

来自分类Dev

确定一部分DNA序列的长度

来自分类Dev

使用Matplotlib颜色图

来自分类Dev

使用Matplotlib颜色图

来自分类Dev

使用 matplotlib 的热图

来自分类Dev

如何计算时间戳的一部分

来自分类Dev

删除时间戳的一部分

来自分类Dev

使用 matplotlib 和 pandas 用虚线创建事件的时间图

来自分类Dev

使用图遍历的一部分的属性作为其他的过滤器

来自分类Dev

使用Protobuf序列化消息的一部分

来自分类Dev

如何使用Matplotlib Python绘制时间序列

来自分类Dev

打印Pandas groupby输出的一部分