我在R中有以下代码片段:
dat <- data.frame(cond = factor(rep("A",10)),
rating = c(1,2,3,4,6,6,7,8,9,10))
ggplot(dat, aes(x=cond, y=rating)) +
geom_boxplot() +
guides(fill=FALSE) +
geom_point(aes(y=3)) +
geom_point(aes(y=3)) +
geom_point(aes(y=5))
Run Code Online (Sandbox Code Playgroud)
这个特定的代码片段产生一个箱形图,其中一个点越过另一个点(在上面的例子中,一个点3越过另一个点3).
如何移动点3以使点保持在y轴上的相同位置,但它在x轴上稍微向左或向右移动?
请考虑以下data.frame
和图表:
library(ggplot2)
library(scales)
df <- data.frame(L=rep(LETTERS[1:2],each=4),
l=rep(letters[1:4],2),
val=c(96.5,1,2,0.5,48,0.7,0.3,51))
# L l val
# 1 A a 96.5
# 2 A b 1.0
# 3 A c 2.0
# 4 A d 0.5
# 5 B a 48.0
# 6 B b 0.7
# 7 B c 0.3
# 8 B d 51.0
ggplot(df,aes(x=L,y=val,fill=l)) +
geom_bar(stat="identity") +
geom_text(aes(label=percent(val/100)),position=position_stack(vjust =0.5))
Run Code Online (Sandbox Code Playgroud)
在制作一些情节时,我正在查看关于ggplot中抖动的文档,我意识到我并不真正理解这个论点.
它声明这些论点是:
Width: degree of jitter in x direction. Defaults to 40% of the resolution of the data.
和
height: degree of jitter in y direction. Defaults to 40% of the resolution of the data.
我的问题是,决议究竟是什么,以及如何确定?
此外,您可以覆盖它并提供一个值,如下面的示例中我们使用0.1:
geom_point(position = position_jitter(w = 0.1, h = 0.1))
什么单位属于0.1?我是否有权假设这一部分分辨率?
我有一个ggplot2
线图,有两行显着重叠.我正在尝试使用position_jitterdodge()
它们以使它们更加明显,但我无法以相同的方式获得线条和指向两者的抖动.我试图只是水平抖动点和线(因为我不想在y轴上建议任何变化).这是一个MWE:
## Create data frames
dimension <- factor(c("A", "B", "C", "D"))
df <- data.frame("dimension" = rep(dimension, 2),
"value" = c(20, 21, 34, 32,
20, 21, 36, 29),
"Time" = c(rep("First", 4), rep("Second", 4)))
## Plot it
ggplot(data = df, aes(x = dimension, y = value,
shape = Time, linetype = Time, group = Time)) +
geom_line(position = position_jitterdodge(dodge.width = 0.45)) +
geom_point(position = position_jitterdodge(dodge.width = 0.45)) +
xlab("Dimension") + ylab("Value")
Run Code Online (Sandbox Code Playgroud)
哪个产生丑陋:
我显然在这里遇到了一些根本性的错误:我应该怎样做才能使geom_point
抖动跟随geom_line
抖动?
我正在为Unity iOS开发一个非常简单的垂直滚动游戏.我的游戏正在经历不一致的抖动.我已经广泛搜索了网络,寻找没有任何运气的解决方案.我正在使用Unity版本5.3.4 f1.
游戏
Update()
(Time.deltaTime
正在成倍增加).LateUpdate()
(使用Vector3.Lerp()
后跟).问题
我们尝试了什么
Update()
,LateUpdate()
,FixedUpdate()
,Time.deltaTime
Time.smoothDeltaTime
线性插值,减少现场的几个立方体和删除所有对撞机和触发器.我完全没有想法.任何帮助或指针将受到高度赞赏.
提前致谢.
您是否知道如何将抖动应用于箱线图的异常数据?这是代码
ggplot(data = a, aes(x = "", y = a$V8)) +
geom_boxplot(outlier.size = 0.5)+
geom_point(data=a, aes(x="", y=a$V8[54]), colour="red", size=3) +
theme_bw()+
coord_flip()
Run Code Online (Sandbox Code Playgroud)
谢谢!!
我正在尝试准确地重现带状图,以便我可以可靠地绘制线条并在其上书写。然而,当我生成带有抖动的带状图时,抖动是随机的,并阻止我实现目标。
我盲目地尝试了rcParams
在其他 Stack Overflow 帖子中找到的一些方法,例如mpl.rcParams['svg.hashsalt']
没有起作用的方法。我也尝试设置种子但random.seed()
没有成功。
我正在运行的代码如下所示。
import seaborn as sns
import matplotlib.pyplot as plt
import random
plt.figure(figsize=(14,9))
random.seed(123)
catagories = []
values = []
for i in range(0,200):
n = random.randint(1,3)
catagories.append(n)
for i in range(0,200):
n = random.randint(1,100)
values.append(n)
sns.stripplot(catagories, values, size=5)
plt.title('Random Jitter')
plt.xticks([0,1,2],[1,2,3])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这段代码生成了一个stripplot
就像我想要的那样。但是,如果您运行代码两次,由于抖动,您将得到不同的点位置。我正在制作的图表需要抖动才能看起来不荒谬,但我想在图表上写字。然而,在运行代码之前无法知道这些点的确切位置,并且每次运行代码时这些点都会发生变化。
有没有办法在seaborn中设置抖动种子,stripplots
使它们完美再现?
我关心的是自适应抖动缓冲器的设计,该缓冲器随着抖动计算的增加和减少而增加和减少容量。
我认为没有理由对延迟或容量进行任何调整,除非存在缓冲区不足,然后可能会出现超出容量的传入数据包突发(假设缓冲区容量首先等于缓冲区深度/延迟)。例如,如果我接收 20 毫秒的数据包,我可能会实现一个 100 毫秒深的缓冲区,因此具有容纳 5 个数据包的容量。如果数据包之间经过 160 毫秒,那么我可能会期望看到几乎同时有多达 8 个数据包进入。此时我有两个选择:
假设选择 2,并且网络状况改善并且数据包传送再次变得正常(抖动值下降)。怎么办?再说一遍,我想我有两个选择:
使用自适应缓冲区,我认为我应该做出选择 4,但这似乎并不正确,因为它要求我人为/任意地丢弃在遇到较大抖动时选择选择 2 时专门保存的音频数据包。第一名。
在我看来,正确的做法是首先采取选择#1来维持延迟,同时丢弃数据包(如有必要),这些数据包由于抖动增加而延迟交付。
类似的情况可能是,在 160 毫秒的间隙后,我没有收到突发的 8 个数据包,而是只收到 5 个数据包(可能刚刚丢失了 3 个数据包)。在这种情况下,增加缓冲区容量并没有多大好处,但确实有助于减少以后溢出的可能性。但是,如果溢出的想法是要避免的(从网络端),那么我首先会将缓冲区容量设置为大于配置的“深度/延迟”的固定量。换句话说,如果溢出不是由于本地应用程序未能及时将数据包从缓冲区中取出而引起的,那么溢出只会因两个原因而发生:要么发送方撒谎并以比约定的速率更快的速率发送数据包(或从未来发送数据包),或者,数据包突发之间存在超出我的缓冲区深度的间隙。
显然,“自适应”缓冲区的全部意义在于识别后一种情况,增加缓冲区容量,并避免丢失任何数据包。但这让我直接面对上述问题:当网络抖动消除时,我如何“适应”回到理想设置,同时仍然执行相同的“不丢包”理念?
想法?
有没有办法根据数值为箱线图上的抖动点着色,例如:
ggplot(data, aes(y = y_var, x = x_var)) +
geom_jitter(size = 2, aes(color = ifelse(y_var < 5, "red", "black)))
Run Code Online (Sandbox Code Playgroud)
我添加了这个可重现的示例,但不太有效(绘图上的颜色与抖动调用不对应):
a <- rnorm(100, mean = 5, sd = 1)
b <- as.factor(sample(0:1, 100, replace = TRUE))
test_data <- data.frame(cbind(a,b))
test_data$b <- as.factor(test_data$b)
ggplot(test_data, aes(y = a, x = b)) +
geom_boxplot()+
geom_jitter(aes(color = ifelse(a < 5, "red", "black")))
Run Code Online (Sandbox Code Playgroud)
R 用户相当新手,我确信有一个简单的解决方案 - 但我找不到它。我有一个包含一系列空间坐标以及许多其他属性的数据框。许多空间坐标是完全相同的 - 我想向它们添加一定量的噪声,以便我可以将它们保持在一定的半径内 - 在本例中为 0.4 米或 40 厘米,同时还跟踪它们相关属性。
我本质上是在寻找这个问题的R版本:https://gis.stackexchange.com/questions/35479/adding-noise-to-overlapping-xy-coordinates-so-no-longer-in-exact-same-地方
...因为当我按照使用 ArcGIS 回答这个问题的说明时 - 我得到了一系列随机点,但我丢失了与这些点关联的属性,并且我无法轻松找到一种方法来匹配它们。
有没有办法使用 R 中的抖动函数或类似的函数并指定空间上下文(例如 40 厘米)中的半径,空间坐标在该范围内随机分布?我不明白如何操纵因子和数量参数以获得我想要的输出。
编辑:
这是一个带有假坐标的 df 示例。正如您所看到的,第一列和第三列中的坐标是相同的,因为动物在同一块岩石下两次。我希望能够为这些坐标添加抖动,使它们略有不同,但我想将抖动控制在40厘米以内(不超过岩石的大小)
mydf <- data.frame("point_id" = 1:6, "date_time" = c("6/5/2018 10:57","6/5/2018 14:30","6/6/2018 10:06","6/6/2018 11:06","6/7/2018 10:35","6/7/2018 15:50"), "Animal_ID" = c(4,5,4,5,4,6), "Rock_ID" = c(1,2,1,3,4,5), x_proj = c(831120.3759,831441.0415,831120.3759,831433.4414,831128.4778,831422.0822), y_proj = c(5877582.998,5875337.074,5877582.998,5875328.897,5877575.360,5875338.216))
#make a separate object for the coordinates#
xy <- mydf[,c(5,6)]
#Convert to a spatialpoints data frame (insert own epsg)
sp.mydf <- SpatialPointsDataFrame(coords = xy, data …
Run Code Online (Sandbox Code Playgroud) jitter ×10
r ×7
ggplot2 ×6
audio ×1
bar-chart ×1
boxplot ×1
coordinates ×1
ios ×1
label ×1
matplotlib ×1
networking ×1
point ×1
python ×1
random ×1
random-seed ×1
seaborn ×1
spatial ×1
unity5 ×1
voip ×1