Nano Hash - криптовалюты, майнинг, программирование

ggplot2: настроить тип линии, но получить сообщение об ошибке

Я хотел бы изменить тип линии на основе моей переменной GraphIndex, но получаю сообщение об ошибке. Для каждой этикетки: «Ферма 3 Затененный», «Ферма 3 Незатененный», «Ферма 4 Восток 3», «Ферма 4 Весна Внутри 1», «Ферма 4 Готика», «Ферма 4 Весна Снаружи 1», «Ферма 4 Запад 3 ", я бы хотел другой тип линии.

Вот немного моих данных:

test <- structure(list(sensorheight = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
16L, 16L, 16L, 16L, 16L, 16L, 16L), date = structure(c(1484985600, 
1484985600, 1484985600, 1484985600, 1484985600, 1484985600, 1484985600, 
1484985600, 1484985600, 1485072000, 1485072000, 1485072000, 1485072000, 
1485072000, 1485072000, 1485072000, 1485072000, 1485072000, 1485158400, 
1485158400, 1485158400, 1485158400, 1485158400, 1485158400, 1485158400, 
1485158400, 1484985600, 1484985600, 1484985600, 1484985600, 1484985600, 
1484985600, 1485072000, 1485072000, 1485072000, 1485072000, 1485072000, 
1485072000, 1485158400, 1485158400, 1485158400, 1485158400, 1485158400, 
1485158400), class = c("POSIXct", "POSIXt"), tzone = ""), GraphIndex = structure(c(6L, 
11L, 14L, 9L, 24L, 27L, 30L, 35L, 34L, 5L, 8L, 13L, 16L, 19L, 
26L, 29L, 32L, 33L, 7L, 12L, 15L, 10L, 25L, 28L, 31L, 36L, 7L, 
12L, 15L, 10L, 19L, 26L, 5L, 8L, 13L, 16L, 3L, 24L, 6L, 11L, 
14L, 9L, 4L, 25L), .Label = c("Farm 1 HT", "Farm 1 HT", "Farm 1 Mid-T", 
"Farm 1 Mid-T", "Farm 2 Non-vented", "Farm 2 Non-vented", "Farm 3 Caterpillar", 
"Farm 3 Open", "Farm 3 Shaded", "Farm 3 Unshaded", "Farm 3 Open Shaded", 
"Farm 3 Open", "Farm 3 Shaded", "Farm 3 Unshaded", "Farm 3 Caterpillar", 
"Farm 3 Open Shaded", "Main Station Shaded", "Main Station Shaded", 
"Farm 4 East 3", "Farm 4 Spring Inside 1", "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
"Farm 4 Gothic", "Farm 4 West 3", "Farm 4 Gothic", "Farm 4 Gothic", 
"School 1 Caterpillar", "School 1 Caterpillar", "School 1 Standard", 
"School 1 Standard", "School 2 Standard", "School 2 Standard", 
"School 4 Standard", "School 4 Standard", "School 3 Standard", 
"School 3 Standard"), class = "factor"), TempC = c(-3.37992831541219, 
-3.35282258064516, -3.8456541218638, -2.94623655913979, -4.12253584229391, 
-2.65837813620072, -3.18906810035842, -3.46415770609319, -3.18458781362007, 
-2.41151433691756, -2.85483870967742, -2.9758064516129, -3.27352150537634, 
-3.48543906810036, -3.19623655913979, -1.19847670250896, -1.65770609318996, 
-1.78360215053763, -0.35203853046595, -2.45094086021505, -2.77620967741936, 
-0.96975806451613, -1.4923835125448, -0.681003584229391, -3.56093189964158, 
-3.5905017921147, -0.738351254480288, -4.04525089605735, -3.99775985663082, 
-1.88709677419355, -3.90524193548387, -3.77060931899642, -2.11491935483871, 
-2.88922491039427, -3.16151433691756, -3.29726702508961, -2.62914426523298, 
-3.22087813620072, -2.42338709677419, -2.02576164874552, -2.65613799283154, 
-1.73454301075269, -3.11559139784946, -0.377240143369176), sd = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, 0.240771126210473, 0.154283603242764, 
NA, NA, NA, 0.0826858736064916, NA, NA, NA, 0.295736639891417, 
NA, NA, NA, 0.124504016579889, NA, NA, NA, 0.227782157559645, 
NA, NA, NA, NA, 0.28512370209135, 0.481542252420946, 0.177568705580224, 
NA, NA, 0.319496948399029, NA, NA, NA, NA, NA, 0.24710720847917, 
0.650398844881712), se = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 
0.170250896057348, 0.109094982078853, NA, NA, NA, 0.058467741935484, 
NA, NA, NA, 0.209117383512545, NA, NA, NA, 0.088037634408602, 
NA, NA, NA, 0.161066308243728, NA, NA, NA, NA, 0.201612903225806, 
0.340501792114695, 0.125560035842294, NA, NA, 0.225918458781362, 
NA, NA, NA, NA, NA, 0.174731182795699, 0.459901433691756), ci = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, 2.16324274182186, 1.38618317798322, 
NA, NA, NA, 0.742903099494086, NA, NA, NA, 2.65708828880356, 
NA, NA, NA, 1.11862420728419, NA, NA, NA, 2.04654148864463, NA, 
NA, NA, NA, 2.56173482584167, 4.32648548364371, 1.59539152209362, 
NA, NA, 2.87056619095703, NA, NA, NA, NA, NA, 2.22017018239611, 
5.84360177494772)), .Names = c("sensorheight", "date", "GraphIndex", 
"TempC", "sd", "se", "ci"), row.names = c(NA, -44L), class = c("tbl_df", 
"tbl", "data.frame"))

Я смог написать аналогичный код для цвета и формы, вот мой графический код:

ggplot(subset(test, sensorheight == "1" & GraphIndex %in% c("Farm 3 Shaded", "Farm 3 Unshaded",
                                                                     "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                                                                     "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                                                                     "Farm 4 West 3")),
       aes(x=date,y=TempC,colour=GraphIndex, group=GraphIndex)) + 
  geom_ribbon(aes(ymin=TempC-sd, ymax=TempC+sd, linetype = NA, fill = GraphIndex), alpha = 0.2) +
  geom_line(aes(linetype=GraphIndex)) + 
  geom_point(aes(shape=GraphIndex),size=1) +
  scale_x_datetime(name = " ", date_breaks = "1 month", date_labels = "%B", limits = as.POSIXct(c("2016-05-01","2017-06-01"))) +
  scale_y_continuous(name = expression("Farm 3"), limits = c(-10,20)) +
  scale_linetype_manual(name = "Type",labels = c("Caterpillar", "Quonset Large","Quonset Small", "Gothic Large", "Gothic Small", "Mid-Tunnel","Outside"), 
                        breaks = c("Farm 3 Shaded", "Farm 3 Unshaded",
                                   "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                                   "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                                   "Farm 4 West 3"),
                        values = c("twodash","dashed","dotted","dotdash","longdash","twodash","solid"))

Вот ошибка, которую я получаю:

Error in grid.Call.graphics(L_polygon, x$x, x$y, index) : 
  invalid line type
21.09.2017

Ответы:


1

Это несоответствие между типами линий geom_ribbon и geom_line, которым назначается scale_linetype_manual.

Либо установите linetype=GraphIndex для geom_ribbon, либо удалите его из aes и установите снаружи как linetype=0.

Решение (1) Установите тип линии geom_ribbon = GraphIndex внутри aes

ggplot(subset(test, sensorheight == "1" & GraphIndex %in% c("Farm 3 Shaded", "Farm 3 Unshaded",
                                                                 "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                                                                 "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                                                                 "Farm 4 West 3")),
       aes(x=date,y=TempC,colour=GraphIndex, group=GraphIndex)) + 
  geom_ribbon(aes(ymin=TempC-sd, ymax=TempC+sd, linetype = GraphIndex, fill = GraphIndex), alpha = 0.2) +
  geom_line(aes(linetype=GraphIndex)) + 
  geom_point(aes(shape=GraphIndex),size=1) +
  scale_x_datetime(name = " ", date_breaks = "1 month", date_labels = "%B", 
limits = as.POSIXct(c("2016-05-01","2017-06-01"))) +
  scale_y_continuous(name = expression("Farm 3"), limits = c(-10,20)) +
  scale_linetype_manual(name = "Type",labels = c("Caterpillar", "Quonset Large","Quonset Small", "Gothic Large", "Gothic Small", "Mid-Tunnel","Outside"), 
                    breaks = c("Farm 3 Shaded", "Farm 3 Unshaded",
                               "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                               "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                               "Farm 4 West 3"),
                    values = c("twodash","dashed","dotted","dotdash","longdash","twodash","solid"))

Решение (2) Установите тип линии geom_ribbon = 0 (пусто) за пределами aes

ggplot(subset(test, sensorheight == "1" & GraphIndex %in% c("Farm 3 Shaded", "Farm 3 Unshaded",
                                                                 "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                                                                 "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                                                                 "Farm 4 West 3")),
       aes(x=date,y=TempC,colour=GraphIndex, group=GraphIndex)) + 
  geom_ribbon(aes(ymin=TempC-sd, ymax=TempC+sd, fill = GraphIndex), alpha = 0.2, linetype = 0) +
  geom_line(aes(linetype=GraphIndex)) + 
  geom_point(aes(shape=GraphIndex),size=1) +
  scale_x_datetime(name = " ", date_breaks = "1 month", date_labels = "%B", 
limits = as.POSIXct(c("2016-05-01","2017-06-01"))) +
  scale_y_continuous(name = expression("Farm 3"), limits = c(-10,20)) +
  scale_linetype_manual(name = "Type",labels = c("Caterpillar", "Quonset Large","Quonset Small", "Gothic Large", "Gothic Small", "Mid-Tunnel","Outside"), 
                    breaks = c("Farm 3 Shaded", "Farm 3 Unshaded",
                               "Farm 4 East 3", "Farm 4 Spring Inside 1", 
                               "Farm 4 Gothic", "Farm 4 Spring Outside 1", 
                               "Farm 4 West 3"),
                    values = c("twodash","dashed","dotted","dotdash","longdash","twodash","solid"))
21.09.2017
  • Решение 2 было именно тем, что мне было нужно. 21.09.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..