在一种情况下,我试图创建一个包含很多重复值的直方图。数据点之一未在图中表示。这是我发现的最小,最简单的子集,仍然可以重现我的问题。
cleanVar <- c(rep(1,9),1.25,1.5)
plot_ly(data.table(cleanVar),
x = ~cleanVar,
type = "histogram")
上图仅显示两个条形图。一个以高度9的1为中心,另一个以高度1的1.2为中心。
同样奇怪的是,尽管悬停区域涵盖了[.9,1.1]
,但第一栏的悬停仍显示为“ 1”,尽管覆盖范围[1.1,1.3]
,悬停仍显示了“ 1.25”。 / p>
如果我们将1更改为仅重复八次cleanVar <- c(rep(1,8),1.25,1.5)
,以使直方图中的总值达到10,它的效果会更好,但是根据它的创建,三个bin的宽度为.25悬停,但它们本身在图形上只有0.2宽。
密谋在做什么?如何正确显示3个高度分别为9,1、1和0.25的纸箱? layout()
中的合并选项无效。
答案 0 :(得分:0)
默认情况下,按情节使用以下过程定义垃圾箱:
开始:
设置x轴仓的起始值。默认值为最小数据值,如有必要,请向下移动以获得良好的舍入值并删除不明确的bin边缘。例如,如果大多数数据是整数,则将bin边移0.5向下,因此
size
为5时,默认start
为-0.5,因此很明显0-4位于第一个bin为5-9,第二个为bin,但是连续数据的开头为0,bin [0,5),[5,10)等开头。日期的行为类似,start
应该是日期字符串。对于类别数据,start
基于类别序列号,默认为-0.5。如果多个非重叠直方图共享一个子图,则将精确使用第一个显式start
,而所有其他显式size
会下移(如有必要),以与该整数相差整数个bin。
结束:
设置x轴仓的最终值。最后一个垃圾箱可能不会结束 恰好在此值上,我们将bin边缘从以下位置增加
start
end
,直到达到或超过start
。默认为最大数据 值。像end
一样,对于日期使用日期字符串,对于类别 数据library(listviewer) schema(jsonedit = interactive())
基于类别序列号。
您可以通过以下方式找到此信息:
x
导航如下:对象►迹线►直方图►属性►xbins►开始
要避免默认行为,只需将factor
变量设置为library(plotly)
library(data.table)
cleanVar <- c(rep(1, 9), 1.25, 1.5)
plot_ly(data.table(cleanVar),
x = ~factor(cleanVar),
type = "histogram")
:
True
结果: