- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 R 中学习 ggplot 并试图创建一个股票图表。我已经能够创建烛台图,现在我想制作条形图。这包括一条从低价到高价的垂直线。然后,线的左侧是开盘价的刻度,右侧是收盘价的刻度。我不知道如何添加这个勾号。我能想到的最接近的东西是 geom_errorbar,但这完全是另一回事, mustache 是双向的。
此外,由于这是每日数据,ggplot 为周末留出了不必要的空间。有没有办法去除这些空格?我在搜索的任何轴格式文章中都没有看到它。
谢谢。!
FOSL chart
用于创建带有低高条的图表的可重现代码。
library(ggplot2)
library(quantmod)
FOSL <- getSymbols("FOSL", from="2015-01-01", auto.assign=FALSE)
names(FOSL) <- gsub("^.+\\.","",names(FOSL)) # remove "FOSL." from column names
FOSL <- data.frame(Date=as.Date(index(FOSL)), FOSL[,1:4])
ggplot(FOSL, aes(x=Date))+
geom_linerange(aes(ymin=Low, ymax=High)) +
labs(title="FOSL")
最佳答案
library(ggplot2)
library(quantmod)
FOSL <- getSymbols("FOSL", from="2015-01-01", auto.assign=FALSE)
names(FOSL) <- gsub("^.+\\.","",names(FOSL)) # remove "FOSL." from column names
rng <- "2015-08"
FOSL <- FOSL[rng]
FOSL <- data.frame(Date=as.POSIXct(index(FOSL)), FOSL[,1:4])
FOSL$chg <- ifelse(Cl(FOSL) > Op(FOSL), "up", "dn")
FOSL$width <- as.numeric(periodicity(FOSL)[1])
# Bar chart:
ggplot(data=FOSL, aes(x=Date, colour = chg)) +
theme_bw() +
geom_linerange(aes(ymin=Low, ymax=High)) +
geom_segment(aes(y = Open, yend = Open, xend = Date - width / 2 )) +
geom_segment(aes(y = Close, yend = Close, xend = Date + width / 2)) +
scale_colour_manual(values = c("dn" = "darkred", "up" = "darkgreen")) + guides(colour = FALSE)
scale_x_datetime
这样的 x 轴刻度的 ggplot 图,周末的空间不能轻易去除。 .这是因为 ggplot 将 POSIXct 和日期数据解释为来自
x-axis
上原点的数字。 .例如as.numeric(as.POSIXct("2015-09-25")) 将是 ggplot 中 x 轴上的值。对于围绕此的“黑客”,您可以查看此 SO 答案,其中日期被视为因素:
library(ggplot2)
library(quantmod)
library(lubridate)
# prepare data:
md <- getSymbols("FOSL", from="2015-01-01", auto.assign=FALSE)
names(md) <- gsub("^.+\\.","",names(md)) # remove "md." from column names
rng <- "2015-08"
md <- md[rng]
# Use ceiling date to ensure "Date" is rounded to 00:00:00 in POSIXct numeric scale from 1970, not Date scale.
md <- data.frame(Date = ceiling_date(as.POSIXct(index(md)), "day"), md[,1:4])
md$time_idx <- 1:NROW(md)
# Check special case of drawing of flat bars:
md[10, 2:5] <- md[10, 5]
gg_build_candlechart_without_weekends <- function(md, # in data.frame format, with a Date column
x_scale = 0.8, # Controls thickness of bars
width = 1
)
{
stopifnot("Date" %in% colnames(md))
md$chg <- ifelse(Cl(md) > Op(md), "up", "dn")
md$time_idx <- 1:NROW(md)
md$width <- width
pl <- ggplot(md, aes(x = time_idx, colour = chg)) +
geom_linerange(aes(ymin=Low, ymax=High)) +
geom_segment(aes(y = Open, yend = Open, xend = time_idx - width / 2 * x_scale)) +
geom_segment(aes(y = Close, yend = Close, xend = time_idx + width / 2 * x_scale)) +
scale_colour_manual(values = c("dn" = "darkred", "up" = "darkgreen")) + guides(colour = FALSE) + labs(x = "Time", y = "Price")
Nr <- NROW(md)
maj_breaks <- round(Nr * c(0.05, 0.25, 0.5, 0.75, .95))
periodicity <- quantile(diff(as.numeric(md$Date)), 0.5)
if (periodicity < 86400) {
label_timestamp <- "%b %d %H:%M:%S"
} else {
label_timestamp <- "%y' %b %d"
}
pl <- pl + scale_x_continuous(limits = c(0, Nr + 1), expand = c(0, 0), breaks = maj_breaks, labels = format(md$Date[maj_breaks], label_timestamp), minor_breaks = Nr * seq(0.1, 0.9, by = 0.2))
# draw flat bars as special case:
md_flatbars <- md[md$High == md$Low, ]
if (NROW(md_flatbars) > 0) {
pl <- pl + geom_segment(data = md_flatbars, aes(x = time_idx - width / 2 * x_scale, y = Close, yend = Close, xend = time_idx + width / 2 * x_scale))
}
pl
}
gg_build_candlechart_without_weekends(md, x_scale = 0.8, width = 1)
关于r - OHLC 图表的 GGPlot 使用条形图,而不是蜡烛图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201587/
我有一个每小时 OHLC 的数据框如下(请忽略 OHLC 的值,我输入它们是为了更好地说明), hr_df = Close High
我了解,使用一列数据对 Pandas 中的时间序列数据进行 OHLC 重新采样将完美运行,例如在以下数据帧上: >>df ctime openbid 1443654000 1.11700
采样所需的数据来自 SQLite。它已在此处提供:https://pastebin.com/LU7YApkX 代码: import sqlite3 import pandas as pd conn =
我正在做一个业余项目,我试图在比特币历史价格的 OHLCV 数据集中识别支持区域,这是我的数据在 pandas 数据框中的样子:
下图中的对齐方式是错误的。 OHLC 数据点正好位于音量条的中间。但附加时间序列从柱线开始处开始(该线应连接 OHLC 点的最低点)。我怎样才能让它居中? 最佳答案 在数据集中使用 setXPosit
我有这样的数据 bid time 2016-05-22 21:05:57.651 1
我正在使用 LightningChartJS 创建 OHLC 图表。默认情况下,条形图的颜色为红色和绿色。如何更改这些条形图的颜色?如何添加填充样式 .setPositiveStyle( (figur
如何使用 JFreeChart 在一张图像中绘制多个数据集的图表? 本质上,我想在一张图像中绘制股票价格及其移动平均线。 我尝试获取 XYPlot 并添加第二个数据集,但它不起作用。 DefaultO
仅对于日终数据,就有数十亿行。存储所有这些数据的最佳方式是什么。 SQL Server 2008 是否足够好,或者我应该寻找 NoSQL 解决方案,如 MongoDB。有什么建议吗? 拥有一个具有读/
问题: 在使用市场数据并将日内数据重新采样到每日时间范围时,如下所示: ohlc_dict = { 'Open':'first', 'High':'max', 'Low':'min', 'Last':
我正在将 30 分钟数据重新采样为每小时数据,但它添加了代表 24 小时内所有 30 分钟时间段的 NaN 行。我希望它仅在 30 分钟记录中有数据时才重新采样。原始 df 没有任何“额外”行,只有
This example shows如何为简单 X-Y 图表的单个点设置自定义数据标签: 特别是,点216.4显示为一个对象,它带有自己的数据标签样式。它不像 data 数组中的其他值那样是整数:
我有一组刻度数据,如下所示: var data = [{ "tid": 283945, "code": "0001", "time": 2018-08-02T04:24:53Z
我目前正在开发一个财务警报应用程序,对于客户端界面,我决定使用 JFreeChart。然而,由于我是新手,关于 ohlc 图表,我无法弄清楚一些重要的事情: -我希望能够在图表中仅放入有限数量的柱形图
我从 JfreeChart 开始。我能够创建 OHLC 图表。我想在同一张图表上添加收盘价的平均值。我应该是一个 TimeSeries ?您知道如何混合图表吗? 谢谢 最佳答案 将第二个数据集添加到图
对于表,例如包含一个日期,价格时间序列,每一个价格,例如毫秒,如何将其下采样为具有时间间隔的打开高低关闭(ohlc)行组,例如分钟? 最佳答案 虽然带数组的选项可以工作,但这里最简单的选项是使用 gr
OHLC 图表以红色(如果开盘价大于收盘价)或绿色显示烛台。使用 LightningChartJS 是否可以为具有相同开盘价和收盘价的柱形图提供不同的颜色(如灰色)?目前它显示为绿色。 .setPos
我正在使用 Python 开发一个应用程序,该应用程序允许用户选择一组烛台并将它们与整个烛台数据库中找到的类似模式进行匹配。 我按照此链接中的第二个教程进行操作,实际上能够执行类似于我想要使用模板匹配
我有一个表格,其中包含各种公司的单独价格列表,例如。 +--------+---------+--------+------+ |符号|时间 | T价格|数量| +--------+---------
我有一个包含列的表格: timeInMilliseconds |价格 我想从中创建 OHLC(开盘价、最高价、最低价、收盘价)蜡烛图。这基本上是将某个时间段(假设每 1 分钟)的所有价格分组,然后选择
我是一名优秀的程序员,十分优秀!