首先,我说过我已经尝试了在散布散点图中的颜色编码错误栏中概述的方法,但是我无法使它们起作用。据我所知,在图版4中处理色轴的方式有所变化,这可能就是为什么它不再解决问题的原因。
我想用两个变量做一个简单的散点图,每个变量都有误差线。我希望点的颜色及其误差线遵循由第三个变量确定的比例。我无法使错误栏颜色与标记匹配。以下是我尝试过的几种简单方法及其结果。
set.seed(1)
x.data <- rnorm(20, 0, 1)
y.data <- rnorm(20, 2, 1)
x.err <- runif(20, 0.2, 0.8)
y.err <- runif(20, 0.2, 0.8)
z.data <- runif(20, 1.7, 2.8)
p <- plot_ly() %>%
add_markers(x=x.data, y=y.data,
error_x=list(array=x.err, color=z.data),
error_y=list(array=y.err, color=z.data),
marker=list(color=z.data, colorscale='Viridis',
colorbar=list(title='Z', limits=range(z.data)))) %>%
layout(xaxis=list(title='X'), yaxis=list(title='Y'))
Run Code Online (Sandbox Code Playgroud)
z.norm <- (z.data - min(z.data))/(max(z.data)-min(z.data))
mycramp<-colorRamp(c("darkblue","yellow"))
mycolors<-rgb(mycramp(z.norm), maxColorValue = 255)
p <- plot_ly() %>%
add_markers(x=x.data, y=y.data,
error_x=list(array=x.err, color=mycolors),
error_y=list(array=y.err, color=mycolors),
marker=list(color=mycolors,
colorbar=list(title='Z', limits=range(z.data)))) %>%
layout(xaxis=list(title='X'), yaxis=list(title='Y'))
Run Code Online (Sandbox Code Playgroud)
我一直在尝试在多级直方图数据上绘制标准误差条,这与以下非常相似:
mth<-rep(c("June","July","August"),length.out=15)
yr<-rep(c("1999","2000","2005","2009","2010"),each=3)
X<-rnorm(15,mean=200,sd=100)
lng<-rep(c(30,31,31),length.out=15)
vrnc<-rnorm(15,mean=740,sd=300)
df<-data.frame(mth,yr,vrnc,lng,X)
dfi<-dim(df)[1]
for(i in 1:dfi){
df$X.se[i]<-sqrt(df$vrnc[i]/df$lng[i])
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用此线程中描述的stat_summary方法放置错误栏.我的stat_summary代码如下所示:
ggplot(df,aes(x=yr,y=X,fill=mth))+
stat_summary(fun.y=mean, geom="bar",position=position_dodge(1)) +
stat_summary(fun.ymin=min,fun.ymax=max,geom="errorbar",
color="grey40",position=position_dodge(1), width=.2) +
geom_errorbar(data=df,aes(ymin=X-X.se,ymax=X+X.se,position="dodge",width=.2))+
scale_fill_discrete("mth")
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用这段代码:
ggplot(df,aes(x=yr,y=X,fill=mth))+
geom_bar(stat="identity",position="dodge")+
geom_errorbar(data=df,aes(ymin=X-X.se,ymax=X+X.se,position="dodge",width=.2))
Run Code Online (Sandbox Code Playgroud)
但结果总是在每年中间出现错误条.
我想知道我做错了什么.每个错误栏应位于数据中引用的月/年之上.
我正在尝试通过python用平均值和标准偏差数组绘制误差线,如下所示:
p11 = np.genfromtxt(filn1,delimiter="",usecols=0,dtype=None)
p12 = np.genfromtxt(filn3,delimiter="",usecols=0,dtype=None)
s11 = np.genfromtxt(filn2,delimiter="",usecols=0,dtype=None)
s12 = np.genfromtxt(filn4,delimiter="",usecols=0,dtype=None)
F1= np.genfromtxt(filn6,delimiter="",usecols=0,dtype=None)
F2= np.genfromtxt(filn7,delimiter="",usecols=0,dtype=None)
yerr1 =0.5*s11
yerr2 = 0.5*s12
plt.errorbar(F1,p11,'r',yerr=yerr1,lw=3,label='Summer')
plt.errorbar(F2,p12,'b',yerr=yerr2,lw=3,label='Winter')
Run Code Online (Sandbox Code Playgroud)
在此,p11和p12是平均值数组,而s11和s12是相应的标准差数组。这段代码运行良好,但是现在导致了:
TypeError: errorbar() got multiple values for keyword argument 'yerr'
Run Code Online (Sandbox Code Playgroud)
任何想法或提示将不胜感激。以撒
我无法在我的数据点之间获取这些线条消失!似乎每当我尝试添加错误栏时它就会这样做.如果你看图表,第一个没有错误栏行,第二个是它.这是pyplot errorbar的常见副作用吗?有谁知道为什么会这样做,或者如何让它消失?
plt.figure()
plt.scatter(x, y, label = 'blah')
plt.errorbar(x, y, yerr = None, xerr = x_err)
plt.plot(x, f) #this is a line of best fit
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用ggplot2绘制与geom_point结合的水平误差线.由于数据对重叠很多并且使得图表难以阅读,我想躲避它们.请看下面的例子:
DF = structure(list(co2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = "dynamic", class = "factor"), exp = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("co2-only",
"co2+clim"), class = "factor"), scen = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("RCP4.5", "RCP8.5"
), class = "factor"), period = structure(c(3L, 2L, 1L, 3L, 2L,
1L, 3L, 2L, 1L, 3L, 2L, 1L), …
Run Code Online (Sandbox Code Playgroud) 在下面的示例中,我有一个简单的平均值图,其中包含 X 轴和 Y 轴的标准偏差误差条。我想控制误差条宽度,以便两个轴始终绘制相同的大小。
理想情况下,我希望条形的宽度/高度与符号的大小相同(即在这种情况下 cex = 3)与最终绘图尺寸无关。有没有办法做到这一点?
# Load required packages:
library(ggplot2)
library(plyr)
# Create dataset:
DF <- data.frame(
group = rep(c("a", "b", "c", "d"),each=10),
Ydata = c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3)),
Xdata = c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3)))
# Summarise data:
subDF <- ddply(DF, .(group), summarise,
X = mean(Xdata), Y = mean(Ydata),
X_sd = sd(Xdata, na.rm = T), Y_sd = sd(Ydata))
# Plot data with error bars:
ggplot(subDF, aes(x = X, y = Y)) +
geom_errorbar(aes(x = X,
ymin = (Y-Y_sd),
ymax = (Y+Y_sd)),
width …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 x 轴上的分类数据在 R 中绘制带有误差线的散点图,使用以下代码:
Nesk <- read.table("E:\\R stuff\\Chapter 2\\Boxplots of nb\\NEnbNOINF.txt", header=TRUE, fill=TRUE)
pd <- position_dodge(0.2)
ggplot(Nesk, aes(x = TYPE, y = NB, color = TYPE)) +
geom_jitter() +
geom_point(position = pd) +
geom_errorbar(aes(ymin = LC, ymax = UC), position = pd) +
theme_bw() +
theme(axis.title = element_text(face = "bold")) +
ylab("Nb")
Run Code Online (Sandbox Code Playgroud)
但是,我无法获得抖动点上的误差线。我最终得到了这个https://i.stack.imgur.com/q3ayt.jpg。抱歉,没有直接插入图像的声誉
我尝试过使用位置闪避,但我知道它只是按类别(COL、LIN、NOM)分隔点,而不是在每个类别内分隔点。有什么方法可以抖动这些点并将误差线附加到这些点上?我看过一些对此进行了修复的帖子,但我认为在某个地方进行的更新使这些修复无效。
提前致谢!
假设我有两个不同的数据源。一种是重复观察,一种只是模型预测的平均值 +/- 标准误差。
n <- 30
obs <- data.frame(
group = rep(c("A", "B"), each = n*3),
level = rep(rep(c("low", "med", "high"), each = n), 2),
yval = c(
rnorm(n, 30), rnorm(n, 50), rnorm(n, 90),
rnorm(n, 40), rnorm(n, 55), rnorm(n, 70)
)
) %>%
mutate(level = factor(level, levels = c("low", "med", "high")))
model_preds <- data.frame(
group = c("A", "A", "A", "B", "B", "B"),
level = rep(c("low", "med", "high"), 2),
mean = c(32,56,87,42,51,74),
sem = runif(6, min = 2, max = 5) …
Run Code Online (Sandbox Code Playgroud) 只是一个简单的问题,我在文档中找不到任何有用的内容plt.errorbar
我想用误差线绘制值:
import matplotlib.pyplot as plt
plt.errorbar(1, 0.25, yerr=0.1, uplims=True, lolims=True, fmt='o')
plt.show()
Run Code Online (Sandbox Code Playgroud)
但我希望误差线带有简单的水平线,而不是末端的箭头。plt.errorbar()
但函数中没有“capmarker”或类似选项