- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在绘制一个金融时间序列(见下文,这里有 1 个月的数据)
我想删除我用红叉等显示的时间段,即星期六。请注意,这些时间段并非所有没有数据的时间段,而只是星期六。
我知道有一些如何消除间隙的例子,例如:http://matplotlib.org/examples/api/date_index_formatter.html .这不是我所追求的,因为它们消除了所有差距。 (不是我的意图!)。
我在想,要走的路可能是为 x 轴创建一个自定义的值序列。由于天数是序数(即 1 天 = 值 1),因此可以创建一个序列,例如 1,2,3,4,5,6,8,9,10,11,12,13, 15、16等每 7 天跳过 1 - 跳过的那一天当然需要是星期六。
我可以想象如何使用 timeutil 中的 rrule 来跳过每个星期六。这是在这里完成的(见下文),因为每个星期一都标有更强的垂直线。但是我如何将它传递给 Tick 定位器呢?事实上,在 matplotlib API 中有一个 RRuleLocator 类,但文档中没有给出如何使用它的指示:http://matplotlib.org/api/dates_api.html#matplotlib.dates.RRuleLocator .欢迎提出任何建议。
这里是我用于当前图表的代码:
fig, axes = plt.subplots(2, figsize=(20, 6))
quotes = price_data.as_matrix() # as matrix() to remove the columns header of the df
mpf.candlestick_ohlc(axes[0], quotes, width=0.01)
plt.bar(quotes[:,0] , quotes[:,5], width = 0.01)
for i , axes[i] in enumerate(axes):
axes[i].xaxis.set_major_locator(mdates.DayLocator(interval=1) )
axes[i].xaxis.set_major_formatter(mdates.DateFormatter('%a, %b %d'))
axes[i].grid(True)
# show night times with a grey shade
majors=axes[i].xaxis.get_majorticklocs()
chart_start, chart_end = (axes[i].xaxis.get_view_interval()[0],
axes[i].xaxis.get_view_interval()[1])
for major in majors:
axes[i].axvspan(max (chart_start, major-(0.3333)),
min(chart_end, major+(0.3333)),color="0.95", zorder=-1 ) #0.33 corresponds to 1/3 of a day i.e. 8h
# show mondays with a line
mondays = list(rrule(WEEKLY, byweekday=MO, dtstart= mdates.num2date(chart_start),
until=mdates.num2date(chart_end)))
for j, monday in enumerate(mondays):
axes[i].axvline(mdates.date2num(mondays[j]), linewidth=0.75, color='k', zorder=1)
最佳答案
如果您的日期是 datetime
对象,或者是 pandas
DataFrame
中的 DateTimeIndex
,您可以检查哪个weekday 某个日期正在使用 .weekday
。然后,您只需将星期六的数据设置为 nan
。请参见下面的示例。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import random
import datetime
import numpy as np
# generate some data with a datetime index
x = 400
data = pd.DataFrame([
random.random() for i in range(x)],
index=[datetime.datetime(2018, 1, 1, 0)
+ datetime.timedelta(hours=i) for i in range(x)])
# Set all data on a Saturday (5) to nan, so it doesn't show in the graph
data[data.index.weekday == 5] = np.nan
# Plot the data
fig, ax = plt.subplots(figsize=(12, 2.5))
ax.plot(data)
# Set a major tick on each weekday
days = mdates.DayLocator()
daysFmt = mdates.DateFormatter('%a')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)
关于python - 从 Timeserie 图中删除星期六(但不是星期日或其他无数据时间段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435138/
我想使用现有 TimeSerie 的索引和另一个具有不同时间索引的 TimeSerie 的值来创建 DataFrame 或 TimeSerie。时间序列看起来像; DT 2018-01-02
我正在尝试使用 Google 监控 REST API(代码示例)获取性能数据。但它返回空数据“{}”。还观察到它正在重新调整响应的 ContentEncoding 为“gzip”类型。 private
我想从某个小时开始以每天(正好 24 小时)的频率重新采样 TimeSeries。 喜欢: index = date_range(datetime(2012,1,1,17), freq='H', pe
我目前正在使用 Azure 时序见解来聚合我的数据。它为我提供了一种生成日期直方图的方法,我可以在其中指定搜索跨度和存储桶大小。然而,buckets的结果并不符合我的预期。 例如,如果搜索范围是从 2
我目前正在尝试为股票价格烛台做一个简单的实现。假设我们有一只名为 XYZ 的股票。该股票收到一系列价格(没有特定频率),(例如)看起来像:XYZ: [10.2, 10.7, 12, 11 ....]。
我有这个jsfiddle:http://jsfiddle.net/Ra2xS/42/ 。我完全不知道哪里出了问题。谁能看一下代码并提出更正建议吗? var dim = {"width":590,"he
如何找到时间序列中最大的序列。例如,我有一个像这样的 DataFrame: index Value 1-1-2012 10 1-2-2012 14 1-3-2012 15 1-4
这是我的代码: function myFunction() { // do stuff } async.timesSeries(100, myFunction); doSomethingE
我已经在谷歌上搜索了一段时间,但没有找到合适的解决方案。我有一个包含几百万行的时间序列,其结构相当奇怪: VisitorID Time VisitDuration 1
作为 AchartEngine API 的 TimeSeries Construstor,只接受字符串作为参数,没有其他参数作为比例参数传递。那么我将如何在两种不同的比例下使用它 谢谢 最佳答案 我想
TimeSerial 函数 返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。 TimeSerial(hour,minute, second) 参数 hour 其值为
我正在绘制一个金融时间序列(见下文,这里有 1 个月的数据) 我想删除我用红叉等显示的时间段,即星期六。请注意,这些时间段并非所有没有数据的时间段,而只是星期六。 我知道有一些如何消除间隙的例子,例如
我有几年的数据,例如(作为 pandas TimeSeries): 1997-04-02 0.0 1997-04-03 0.0 1997-04-04 2.0 1997-04-0
我有一个 TimeSeries 图表,显示每个日期的一些值,并且有两个系列显示为两条不同的行。 问题是有时一个系列不包含某些特定日期的值。在这种情况下,我假设该行将从本系列的上一点延续到下一点。 不幸
我正在努力思考 Redis 的时间序列规则创建是如何工作的,我很困惑为什么 Redis 会忽略聚合中的最后一项,并且想知道这是否是预期的行为。 我在 redis-cli 中创建了一个示例代码来说明:
使用 Charts package是否可以调整 TimeSeries 图表的笔划宽度? 查看文档/examples我看到折线图显示了一个 strokeWidthPxFn,但我没有在 timeSerie
目前,我的 TimeSeries 图表每 2 秒显示一个位置的温度。 现在,如果我想每 2 秒显示一次降雨指数和温度,我该如何实现? 这是我的代码: import testWeatherService
我必须绘制时间序列图表,其中数据以纳秒为单位。但是,在我当前的实现中,我们的日期轴范围以毫秒为单位。 那么如何将日期轴范围从毫秒更改为纳秒。 谢谢。 :) 最佳答案 这是我在your post上给出的
我从 JfreeChart 开始。我能够创建 OHLC 图表。我想在同一张图表上添加收盘价的平均值。我应该是一个 TimeSeries ?您知道如何混合图表吗? 谢谢 最佳答案 将第二个数据集添加到图
我有一个时间序列索引的 df,频率为 15 分钟,持续 10 年: dat 2004-04-07 00:00:00 4.0 2004-04-07
我是一名优秀的程序员,十分优秀!