2015-07-31 3 views
1

У меня возникли проблемы ... Я довольно новичок в R, и я думаю, что этот вопрос может показаться вам легким, но я не знаю, как его решить.Несколько кривых с разными цветами

  1. У меня есть таблица, подобная ниже, и я хочу нарисовать некоторые кривые. Я хочу, чтобы кривая имела разные цвета, а метка x была как x = "10^-x".
  2. Я хочу, чтобы после этого нарисовать линию в y = 0.5 и y = 0.9, чтобы я мог видеть, сколько элементов у меня на 50% и 90%.

Может ли кто-нибудь помочь мне в этом?

P.S: Вот таблица: xy - это матрица, которую можно видеть, значения x повторяются, поэтому каждый раз, когда она начинается, это новая кривая для рисования.

 x   y 
[1,] -10 1.14259527 
[2,] -9 1.15024188 
[3,] -8 1.10517450 
[4,] -7 1.00961311 
[5,] -6 0.71238360 
[6,] -5 0.20355333 
[7,] -4 0.04061895 
[8,] -10 1.11022461 
[9,] -9 1.11083317 
[10,] -8 1.07867942 
[11,] -7 0.98422000 
[12,] -6 0.73539660 
[13,] -5 0.36134577 
[14,] -4 0.18124645 
[15,] -10 2.13212408 
[16,] -9 1.14529425 
[17,] -8 1.25102307 
[18,] -7 1.16045169 
[19,] -6 0.50321380 
[20,] -5 0.15422609 
[21,] -4 0.10198811 
+0

Я рекомендую вам добавить тег R –

ответ

1

Это может вас заинтересовать. Я предполагаю, что ваша матрица называется xy.

my.data <- data.frame(xy) 

library(ggplot2) # you may have to install the package 

Создайте несколько меток:

my_labels <- parse(text = paste("x^", seq(-10, -4, 1), sep = "")) 

Затем сюжет ...

ggplot(my.data) + 
    geom_point(aes(x = x, y = y, color = as.factor(x))) + 
    geom_line(aes(x = x, y = y, color = as.factor(x))) + 
    scale_x_continuous("x", breaks = seq(-10, -4, 1), labels = my_labels) 
+0

Эй ... Ответ не полный ... Я до сих пор не хватает часть i получает изменение оси X, чтобы не отображать «-10, -9, ..., -4», но «1E-10, 1E-9, ..., 1E-4». Как я могу изменить метку этой оси X в этом коде? Спасибо – Lycone

+0

Я отредактировал оригинальный ответ, чтобы включить ярлыки. Вы фактически манипулируете или меняете метки оси X с помощью строки 'scale_x_continuous()'. Это дополнение к легенде также должно работать с примером mpalanco. – pHroc

+0

Это здорово, это именно то, что я искал ... Он работает просто отлично. Благодарю. – Lycone

1

Вы можете создать дополнительный столбец, чтобы отметить начало новых кривых (A, B и C в этом примере), а затем следующий код

library(ggplot2) 
    ggplot(data=df, aes(x=x, y=y, group=z, colour=z)) + 
    geom_line() + 
    geom_point() 

enter image description here

данные:

df <- structure(list(x = c(-10L, -9L, -8L, -7L, -6L, -5L, -4L, -10L, 
-9L, -8L, -7L, -6L, -5L, -4L, -10L, -9L, -8L, -7L, -6L, -5L, 
-4L), y = c(1.14259527, 1.15024188, 1.1051745, 1.00961311, 0.7123836, 
0.20355333, 0.04061895, 1.11022461, 1.11083317, 1.07867942, 0.98422, 
0.7353966, 0.36134577, 0.18124645, 2.13212408, 1.14529425, 1.25102307, 
1.16045169, 0.5032138, 0.15422609, 0.10198811), z = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor")), .Names = c("x", 
"y", "z"), class = "data.frame", row.names = c(NA, -21L)) 

Выход:

 x   y z 
1 -10 1.14259527 A 
2 -9 1.15024188 A 
3 -8 1.10517450 A 
4 -7 1.00961311 A 
5 -6 0.71238360 A 
6 -5 0.20355333 A 
7 -4 0.04061895 A 
8 -10 1.11022461 B 
9 -9 1.11083317 B 
10 -8 1.07867942 B 
11 -7 0.98422000 B 
12 -6 0.73539660 B 
13 -5 0.36134577 B 
14 -4 0.18124645 B 
15 -10 2.13212408 C 
16 -9 1.14529425 C 
17 -8 1.25102307 C 
18 -7 1.16045169 C 
19 -6 0.50321380 C 
20 -5 0.15422609 C 
21 -4 0.10198811 C 
Смежные вопросы