Мой набор данных представлен в виде таблицы, созданной в praat, которая содержит столбцы f220, f120, f280 и f180.Под каждым из них находится измерение, связанное с конкретным словом, так что слово в строке 1 будет иметь уникальные значения f220, f120, f280 и f180.Моя цель - построить стрелку от x1 = f220 y1 = f120 до x2 = f280 y2 = f180.Это моя таблица:
Однако всякий раз, когда я пытаюсь использовать f220, f120, f280 или f180 в ggplot, измерения рассматриваются как дискретныеценности, а не в непрерывном масштабе.Я считаю, что содержание каждой ячейки рассматривается как фактор, а не числовое значение.Я уже пытался использовать as.numeric()
, однако это вернуло неверные значения.Я получаю график с:
ggplot() +
geom_segment(data=ow, mapping=aes(x=f220, y=f120, xend=f280, yend=f180),
arrow=arrow(angle=5), size=.5, color="red")
, но ось не масштабируется, плюс я не могу установить какие-либо ограничения или повернуть ось, получив ошибку «дискретное значение передано в непрерывный масштаб».Вот что происходит:
Я могу получить то, что хочу, вручную создав фрейм данных с упорядоченной парой всех соответствующих значений,однако, поскольку это отнимает много времени, и мне нужно сделать это для более 100 наборов данных, я бы предпочел не просто копировать и вставлять числа.Это ручной фрейм данных (это правильный график через фрейм данных):
dfow=data.frame(x=c(1126.519537,1034.584991,1277.922287,1304.417017,1312.378515,1336.947675,932.284623,1253.6823255372103,1291.853523,1184.573491), y=c(621.0741703,593.9790728,619.6623011,533.3008616,450.9261326,540.0055773,410.0854765,576.6145726,549.7064836,532.9992762), xv=c(1143.969311,1236.669227,1162.265314,1346.566912,1100.251361,1031.416842,1578.243306,1208.190102,1166.698588,1328.207814), yv=c(460.6605515,361.6829504,347.2567965,404.6473197,345.9352715,423.4654868,408.2602727,330.5207874,292.0723355,394.1734665))
ggplot() +
geom_segment(data=dfow, mapping=aes(x=x, y=y, xend=xv, yend=yv), arrow=arrow(angle=5),
size=.5, color="red") +
geom_point(data=dfow, mapping=aes(x=x, y=y), size=2, shape=2, color="red") +
scale_x_reverse() +
scale_y_reverse() +
xlab("F2(HZ)") +
ylab('F1(Hz)') +
xlim(2500, 500) +
ylim(800, 200)
В предыдущем проекте я смогчтобы построить точечный график, используя следующий код, где «story» - похожая таблица, сгенерированная praat, но только с f1 и f2.
ggplot(story, aes(y=f1, x=f2)) +
geom_text(aes(label = class, color=class)) +
scale_x_reverse() +
scale_y_reverse() +
xlab("F2(HZ)") +
ylab('F1(Hz)')
Я использовал один и тот же скрипт praat для создания обеих таблиц,за исключением того, что текущий показанный был изменен, чтобы иметь два значения f1 и два значения f2 (одно на 20% и одно на 80% гласного), чтобы я мог создать стрелку от точки 20% до 80% для представлениядвижение гласного в артикуляционном пространстве.У меня никогда не было проблем в этом предыдущем проекте, и я понятия не имею, почему мои цифры рассматриваются как факторы в текущем.
Любая помощь в получении правильной таблицы без необходимости ручного ввода значений во фрейм данных будет принята с благодарностью.