AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 79229465
Accepted
Homer Jay Simpson
Homer Jay Simpson
Asked: 2024-11-27 16:31:36 +0800 CST2024-11-27 16:31:36 +0800 CST 2024-11-27 16:31:36 +0800 CST

Exibir texto no final e à direita de cada linha no ggplot2 em R [duplicado]

  • 772
Esta pergunta já tem respostas aqui :
Plotar rótulos nas extremidades das linhas (10 respostas)
Fechado há 11 horas .

Eu tenho um quadro de dados em R chamado df_ que se parece com isto:

df_
# A tibble: 40 × 4
# Groups:   Year [5]
    Year Country    mu Color 
   <int> <fct>   <dbl> <fct> 
 1  2019 ALPHA    68.9 red   
 2  2019 BETA     64.8 black 
 3  2019 GAMMA    70.0 yellow
 4  2019 RHO      65.2 gray  
 5  2019 DELTA    70.1 green 
 6  2019 EPSILON  69.6 pink  
 7  2019 THETA    69.8 purple
 8  2019 OMEGA    67.9 orange
 9  2020 ALPHA    69.3 red   
10  2020 BETA     65.2 black 
# ℹ 30 more rows

eu quero 2 coisas:

a) aplicar a cada linha a cor do país correspondente b) no final de cada linha exibir o texto de cada coluna de país e o último valor (ou seja, o ano 2024). Por exemplo, no final e à direita da linha exibir ("ALPHA ,76.4").

Como posso fazer isso em R usando ggplot2?

ggplot(df_, aes(x = Year, y = mu,color = Color, group =Country)) +
  geom_line(size = 1.5) +
  geom_point() +
  labs(x = "Years", y = "") +
  theme_minimal() +
  theme(legend.position = "none")  

dados

structure(list(Year = c(2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 
2020L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 
2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2024L, 
2024L, 2024L, 2024L, 2024L, 2024L, 2024L, 2024L), Country = structure(c(1L, 
2L, 5L, 7L, 3L, 4L, 8L, 6L, 1L, 2L, 5L, 7L, 3L, 4L, 8L, 6L, 1L, 
2L, 5L, 7L, 3L, 4L, 8L, 6L, 1L, 2L, 5L, 7L, 3L, 4L, 8L, 6L, 1L, 
2L, 5L, 7L, 3L, 4L, 8L, 6L), levels = c("ALPHA", "BETA", "DELTA", 
"EPSILON", "GAMMA", "OMEGA", "RHO", "THETA"), class = "factor"), 
    mu = c(68.855, 64.77, 69.9875, 65.22, 70.1266666666667, 69.6166666666667, 
    69.8085714285714, 67.9093333333333, 69.2675, 65.2, 72.4075, 
    69.49, 72.28, 69.262, 70.07125, 65.3864285714286, 74.6584615384615, 
    67.77, 75.3533333333333, 73, 64.09, 73.1715384615385, 66.058, 
    72.12, 75.5645833333333, 70.46, 78.2933333333333, 79.07, 
    59.82, 79.6361538461538, 74.225, 69.5871428571429, 76.4007407407407, 
    67.91, 76.805, 77.31, 74.0966666666667, 81.2811764705882, 
    74.6671428571428, 78.0316666666667), Color = structure(c(7L, 
    1L, 8L, 2L, 3L, 5L, 6L, 4L, 7L, 1L, 8L, 2L, 3L, 5L, 6L, 4L, 
    7L, 1L, 8L, 2L, 3L, 5L, 6L, 4L, 7L, 1L, 8L, 2L, 3L, 5L, 6L, 
    4L, 7L, 1L, 8L, 2L, 3L, 5L, 6L, 4L), levels = c("black", 
    "gray", "green", "orange", "pink", "purple", "red", "yellow"
    ), class = "factor")), class = c("grouped_df", "tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -40L), groups = structure(list(
    Year = c(2019L, 2020L, 2022L, 2023L, 2024L), .rows = structure(list(
        1:8, 9:16, 17:24, 25:32, 33:40), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -5L), .drop = TRUE))

insira a descrição da imagem aqui

editar

adicionando:

  mutate(label = if_else(Year == max(Year), as.character(Country), NA_character_))

no quadro de dados e no gráfico:

  theme(legend.position = "none")  +
  geom_label_repel(aes(label = label),
                   nudge_x = 1,
                   na.rm = TRUE)

cria:insira a descrição da imagem aqui

  • 1 1 respostas
  • 39 Views

1 respostas

  • Voted
  1. Best Answer
    Friede
    2024-11-27T17:44:22+08:002024-11-27T17:44:22+08:00

    Há muitas opções.

    library(ggplot2)
    library(ggrepel)
    library(dplyr)
    X |>
      ggplot() +
      geom_line(aes(x=Year, y=mu, colour=Color, group=Country), size=1.5) +
      geom_point(aes(x=Year, y=mu, colour=Color, group=Country)) +
      geom_text_repel(data = X |> filter(Year==2024) |> 
                  mutate(lbl=sprintf("%s, %.01f", Country, mu)),
                  aes(label=lbl, x=Year, y=mu, colour=Color), 
                  nudge_x=.5, size=2.5) + 
      labs(x="Years", y="") +
      theme_minimal() +
      theme(legend.position="none") 
    

    onde Xestão seus dados. Por exemplo, uma referência sobre SO pode ser encontrada aqui .

    • 1

relate perguntas

  • Adicionar número de série para atividade de cópia ao blob

  • A fonte dinâmica do empacotador duplica artefatos

  • Selecione linhas por grupo com 1s consecutivos

  • Lista de chamada de API de gráfico subscritoSkus estados Privilégios insuficientes enquanto os privilégios são concedidos

  • Função para criar DFs separados com base no valor da coluna

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve