Предложение:
def peek(iterable):
try:
first = next(iterable)
except StopIteration:
return None
return first, itertools.chain([first], iterable)
Использование:
res = peek(mysequence)
if res is None:
# sequence is empty. Do stuff.
else:
first, mysequence = res
# Do something with first, maybe?
# Then iterate over the sequence:
for element in mysequence:
# etc.
Вот одна возможность с пакетом ggplot2
.
N <- 10
labs <- factor(1:N,labels=paste("This is \n observation",1:N))
dnow <- data.frame(x=1:N, y=runif(N), labels=labs)
qplot(labels,y,data=dnow) +
opts(axis.text.x=theme_text(angle=-45,hjust=0))
Я тоже с нетерпением жду возможности увидеть примеры базовых пакетов!
Это то, что я приготовил (до моих ggplot2
дней) с использованием базовой графики:
## data
N <- 10
dnow <- data.frame(x=1:N, y=runif(N), labels=paste("This is \nobservation ",1:N))
## make margins wide
par(mfrow=c(1,1), mar=c(10,10,6,4))
## plot without axix labels or ticks
with(dnow, plot(x,y, xaxt="n", xlab=""))
## the positions we ant to plot
atn <- seq(1,N,3)
## the label for these positions
lab <- dnow$labels[atn]
## plot the axis, but do not plot labels
axis(1, at=atn, labels=FALSE)
## plot labels
text(atn, ## x position
par("usr")[3]-.05, ## position of the low axis
srt=45, ## angle
labels=lab, ##labels
xpd=TRUE, ## allows plotting outside the region
pos=2)
## par("usr")[3]