Легенда с данными из двух разных столбцов [дубликат]

Для тех, кто не хочет использовать внешние почтовые программы и хочет отправлять почту () на выделенный Linux-сервер.

Способ, как php-сообщения, описаны в php.ini в разделе [mail function] , Параметр sendmail-path описывает, как вызывается sendmail. Значение по умолчанию - sendmail -t -i, поэтому, если вы заработаете sendmail -t -i < message.txt в консоли linux, вы сделаете это. Вы также можете добавить mail.log для отладки и убедиться, что почта действительно вызвана.

Различные MTA могут реализовать sendmail, они просто делают символическую ссылку на свои двоичные файлы на это имя. Например, в debian default используется postfix. Настройте свой MTA для отправки почты и протестируйте ее с консоли с помощью sendmail -v -t -i < message.txt. Файл message.txt должен содержать все заголовки сообщения и тело, адресаты назначения для конверта будут взяты из заголовка To:. Пример:

From: myapp@example.com
To: mymail@example.com
Subject: Test mail via sendmail.

Text body.

Я предпочитаю использовать ssmtp как MTA, потому что он прост и не требует запуска демона с открытыми портами. ssmtp подходит только для отправки почты с локального хоста, он также может отправлять аутентифицированную электронную почту через вашу учетную запись в общедоступной почтовой службе. Установите ssmtp и отредактируйте конфигурацию /etc/ssmtp/ssmtp.conf. Чтобы иметь возможность также получать локальную системную почту для учетных записей unix (например, оповещения для root из заданий cron), настройте файл /etc/ssmtp/revaliases.

Вот моя конфигурация для моей учетной записи в почте Yandex:

root=mymail@example.com
mailhub=smtp.yandex.ru:465
FromLineOverride=YES
UseTLS=YES
AuthUser=abcde@yandex.ru
AuthPass=password
9
задан zx8754 1 May 2016 в 20:45
поделиться

2 ответа

Если вы переименуете столбцы исходного фрейма данных и затем расплавите его в длинный формат с помощью reshape2::melt, его гораздо проще обработать в ggplot2. Определив эстетику color и shape в команде ggplot и вручную определив масштаб для цветов и фигур, появится легенда.

source("http://www.openintro.org/stat/data/arbuthnot.R")
library(ggplot2)
library(reshape2)

names(arbuthnot) <- c("Year", "Men", "Women")

arbuthnot.melt <- melt(arbuthnot, id.vars = 'Year', variable.name = 'Sex', 
    value.name = 'Rate')

ggplot(arbuthnot.melt, aes(x = Year, y = Rate, shape = Sex, color = Sex))+
geom_point() + scale_color_manual(values = c("Women" = '#ff00ff','Men' = '#3399ff')) + 
scale_shape_manual(values = c('Women' = 17, 'Men' = 16))

enter image description here [/g0]

12
ответ дан Jim M. 21 August 2018 в 13:28
поделиться
  • 1
    спасибо именно то, что я искал. Структура кажется немного сложнее, чем использование только ggplot2. Я посмотрю документацию reshape2 ... Спасибо – S12000 18 July 2013 в 16:45

Вот способ сделать это, не используя reshape :: melt. reshape :: melt works, но вы можете попасть в привязку, если хотите добавить к графику другие вещи, например, сегменты линий. В приведенном ниже коде используется оригинальная организация данных. Ключ к модификации легенды состоит в том, чтобы убедиться, что аргументы scale_color_manual (...) и scale_shape_manual (...) идентичны, иначе вы получите две легенды.

source("http://www.openintro.org/stat/data/arbuthnot.R")
library(ggplot2)
library(reshape2)



ptheme <- theme (
  axis.text            = element_text(size = 9),              # tick labels
  axis.title           = element_text(size = 9),              # axis labels
  axis.ticks           = element_line(colour = "grey70", size = 0.25),
  panel.background     = element_rect(fill = "white", colour = NA),
  panel.border         = element_rect(fill = NA, colour = "grey70", size = 0.25),
  panel.grid.major     = element_line(colour = "grey85", size = 0.25),
  panel.grid.minor     = element_line(colour = "grey93", size = 0.125),
  panel.margin         = unit(0 , "lines"),
  legend.justification = c(1, 0), 
  legend.position      = c(1, 0.1),
  legend.text          = element_text(size = 8),
  plot.margin          = unit(c(0.1, 0.1, 0.1, 0.01), "npc")   # c(bottom, left, top, right), values can be negative
)

cols    <- c( "c1" = "#ff00ff", "c2" = "#3399ff" )
shapes  <- c("s1" = 16, "s2" = 17)

p1 <- ggplot(data = arbuthnot, aes(x = year))
p1 <- p1 + geom_point(aes( y = boys,  color = "c1", shape = "s1"))
p1 <- p1 + geom_point(aes( y = girls, color = "c2", shape = "s2")) 
p1 <- p1 + labs( x = "Year", y = "Rate" )
p1 <- p1 + scale_color_manual(name = "Sex", 
                                breaks = c("c1", "c2"), 
                                values = cols,
                                labels = c("boys", "girls"))
p1 <- p1 + scale_shape_manual(name = "Sex", 
                              breaks = c("s1", "s2"),
                              values = shapes,
                              labels = c("boys", "girls"))
p1 <- p1 +  ptheme

print(p1)

результаты вывода

4
ответ дан Ken Junk 21 August 2018 в 13:28
поделиться
  • 1
    Этот код будет довольно беспорядочным, если у нас есть, например, 5-6 + категории фруктов, а не «мальчики». и "девушки". – zx8754 1 May 2016 в 20:44
Другие вопросы по тегам:

Похожие вопросы: