точечный график x-y в r с метками на точках

#r #ggplot2 #text #scatter-plot

#r #ggplot2 #текст #точечная диаграмма

Вопрос:

Я пытаюсь создать точечную диаграмму x-y. Я не возражаю, если это в plot или ggplot2. Я мало что знаю о каждом, но я хотел бы привести пример в обоих, если вы не возражаете. Я хотел бы иметь метки на точках.

Ниже приведен код и dput:

 tickers <- rownames(x2)

library(zoo)
plot(x2, 
     main= "Vol vs Div",
     xlab= "Vol (in %)",
     ylab= "Div",
     col= "blue", pch = 19, cex = 1, lty = "solid", lwd = 2)

text(x=x2$Volatility101,y=x2$`12m yield`, labels=tickers,cex= 0.7, pos= 3)

 

x2:

 structure(list(Volatility101 = c(25.25353177644, 42.1628734949414, 
28.527736824123), `12m yield` = c("3.08", "7.07", "4.72")), class = "data.frame", row.names = c("EUN", 
"HRUB", "HUKX"))
 

Ответ №1:

Вот tidyverse решение.

 library(ggplot2)
library(tidyr)
library(dplyr)
library(ggrepel)

x2 %>%
  rownames_to_column(var = "tickers") %>%
  ggplot(aes(x = Volatility101, y = `12m yield`))  
  geom_point(color = "blue")  
  geom_text_repel(aes(label = tickers))  
  ggtitle("Vol vs Div")  
  xlab("Vol (in %)")  
  ylab("Div")  
  theme_classic() 
 

введите описание изображения здесь

Ответ №2:

Я был удивлен, что plot функция вообще работала. Значения Y являются символьными значениями. Исправление этого в текстовом вызове приводит к размещению текста в ожидаемых местах

 text(x=x2$Volatility101,y=as.numeric(x2$`12m yield`) .1, labels=tickers,
            cex= 0.7, col='black')
 

Пара замечаний о представлении вопроса: неясно (и вводит в заблуждение), почему ggplot2 является тегом. plot Функция является общей, и в данном случае она использует базовую графику, а не какую-либо ggplot2 конкретную или grid графику в более общем смысле. Я также думаю, что library(zoo) вызов, вероятно, не нужен. Существует plot.zoo функция, но в этом случае она не будет вызвана.