Попробуйте это, но я не думаю, что это сработает, потому что вы не должны изменять это
Поместите эту строку в файл htaccess в каталоге, в котором вы хотите, чтобы этот параметр enabled:
php_value allow_url_fopen On
Обратите внимание, что этот параметр применим только к файлам PHP в том же каталоге, что и файл htaccess.
В качестве альтернативы использованию url_fopen попробуйте использовать curl.
Пакет ggplot2
требует немного обучения, но результаты выглядят очень хорошо, вы получаете приятные легенды, а также множество других приятных функций, без необходимости писать много кода.
require(ggplot2)
require(reshape2)
df <- data.frame(time = 1:10,
a = cumsum(rnorm(10)),
b = cumsum(rnorm(10)),
c = cumsum(rnorm(10)))
df <- melt(df , id.vars = 'time', variable.name = 'series')
# plot on same grid, each series colored differently --
# good if the series have same scale
ggplot(df, aes(time,value)) + geom_line(aes(colour = series))
# or plot on different plots
ggplot(df, aes(time,value)) + geom_line() + facet_grid(series ~ .)
[/g0] [/g1]
Если имена столбцов в файле файла .csv
недопустимы R имя:
data <- read.csv("sample.csv",sep=";",head=TRUE)
data2 <- read.csv("sample.csv",sep=";",head=FALSE,nrows=1)
for ( i in seq(1,length( data ),1) ) plot(data[,i],ylab=data2[1,i],type="l")
nrows = 1
в read.csv
.
– Rustam Guliev
5 December 2016 в 20:25
Вы можете указать заголовок (а также заголовок осей через xlab
и ylab
) с опцией main
. Например:
plot(data[,i], main=names(data)[i])
И если вы хотите отображать (и сохранять) каждую переменную в кадре данных, вы должны использовать png
, pdf
или любой другой графический драйвер, который вам нужен, и после этого вопроса dev.off()
. Например ::
data <- read.csv("sample.csv",header=T,sep=",")
for (i in 1:length(data)) {
pdf(paste('fileprefix_', names(data)[i], '.pdf', sep='')
plot(data[,i], ylab=names(data[i]), type="l")
dev.off()
}
Или нарисуйте все графики на одно и то же изображение с помощью параметра mfrow
параметра par()
. Например: используйте par(mfrow=c(2,2)
для включения следующих 4 графиков в одно и то же «изображение».
Вы можете перепрыгнуть через обручи и преобразовать свое решение в вызов lapply
, sapply
или apply
. (Я вижу, что @jonw показывает один способ сделать это.) Кроме того, что у вас уже есть вполне приемлемый код.
Если это все временные ряды или аналогичные, то подходящей альтернативой может быть следующее: который отображает каждую серию в своей собственной панели на одном участке графика. Мы используем пакет zoo
, поскольку он отлично обрабатывает упорядоченные данные.
require(zoo)
set.seed(1)
## example data
dat <- data.frame(X = cumsum(rnorm(100)), Y = cumsum(rnorm(100)),
Z = cumsum(rnorm(100)))
## convert to multivariate zoo object
datz <- zoo(dat)
## plot it
plot(datz)
Что дает: [/g0]
На этом компьютере у меня нет R, но здесь есть трещина. Вы можете использовать par
для отображения нескольких графиков в окне или как это, чтобы вызвать клик перед отображением следующей страницы.
plotfun <- function(col)
plot(data[ , col], ylab = names(data[col]), type = "l")
par(ask = TRUE)
sapply(seq(1, length(data), 1), plotfun)
Существует очень простой способ построения всех столбцов из фрейма данных с помощью отдельных панелей или той же панели:
plot.ts(data)
Что дает (где X1 - X4 - имена столбцов):
[/g0]
Посмотрите «plot.ts» для всех параметров.
Если вы больше не контролируете функцию построения графика, а не используете цикл, вы также можете сделать что-то вроде:
par(mfcol = c(ncol(data), 1))
Map(function(x,y) plot(x, main =y), data, names(data))
data <- data.frame(x=c(rnorm(10)),y=c(rnorm(10)),z=c(rnorm(10))) plot.ts(data,plot.type=c("single"),lty=1:3)
– Geek On Acid
20 November 2011 в 02:53
single
, вы также должны добавить: col=rainbow(ncol(my.data))
или что-то подобное, чтобы строки выглядели удобочитаемыми.
– bright-star
6 January 2014 в 08:21
Используя некоторые из приведенных выше советов (особенно спасибо @daroczig для формы names(df)[i]
), эта функция печатает гистограмму для числовых переменных и гистограмму для переменных факторов. Хорошее начало изучения кадра данных:
par(mfrow=c(3,3),mar=c(2,1,1,1)) #my example has 9 columns
dfplot <- function(data.frame)
{
df <- data.frame
ln <- length(names(data.frame))
for(i in 1:ln){
mname <- substitute(df[,i])
if(is.factor(df[,i])){
plot(df[,i],main=names(df)[i])}
else{hist(df[,i],main=names(df)[i])}
}
}
С наилучшими пожеланиями, матем.
С lattice
:
library(lattice)
df <- data.frame(time = 1:10,
a = cumsum(rnorm(10)),
b = cumsum(rnorm(10)),
c = cumsum(rnorm(10)))
form <- as.formula(paste(paste(names(df)[- 1], collapse = ' + '),
'time', sep = '~'))
xyplot(form, data = df, type = 'b', outer = TRUE)
Я удивлен, что никто не упомянул matplot
. Это довольно удобно, если вам не нужно рисовать каждую линию в отдельных осях. Только одна команда:
matplot(y = data, type = 'l', lty = 1)
Используйте ?matplot
, чтобы просмотреть все параметры.
Чтобы добавить легенду, вы можете установить цветовую палитру, а затем добавить:
mypalette = rainbow(ncol(data))
matplot(y = data, type = 'l', lty = 1, col = mypalette)
legend(legend = colnames(data), x = "topright", y = "topright", lty = 1, lwd = 2, col = mypalette)
hyperSpec
. Но здесь было бы лучше использовать более известную функцию, поэтому я изменил ее на rainbow
. Если вы не знаете о функциях палитры, посмотрите ?rainbow
. Извините за смущение.
– Rustam Guliev
6 December 2016 в 09:03