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 / user-12836787

tassones's questions

Martin Hope
tassones
Asked: 2025-04-29 01:34:56 +0800 CST

Como formatar o título de um gráfico facet_wrap para corresponder ao estilo das tiras de faceta?

  • 8

Estou tentando formatar o título de um facet_wrapgráfico para corresponder ao estilo das faixas de facetas. No gráfico abaixo, adicionei um título "len", mas sua formatação não se parece com a das faixas de facetas (por exemplo, 0,5, 1, 2) à direita. Como posso fazer o título se parecer com as faixas de facetas (por exemplo, caixa retangular cinza, contorno preto, texto centralizado na largura do gráfico, etc.)?

library(tidyverse)

ToothGrowth |> 
  ggplot(aes(x = dose, y = len)) + 
  geom_boxplot(aes(fill = supp)) +
  labs(title = 'len',
       y = NULL) +
  theme_bw() +
  facet_wrap(~dose, ncol = 1, strip.position = "right")

Criado em 28/04/2025 com reprex v2.1.1

  • 2 respostas
  • 36 Views
Martin Hope
tassones
Asked: 2024-12-31 05:21:19 +0800 CST

Como posso fazer com que a barra de cores da legenda tenha a mesma altura do meu painel de plotagem com facetas?

  • 6

Como posso ajustar a altura da barra de cores da legenda para corresponder à altura dos meus gráficos ao usar facet_wrap()? Esta pergunta SO relacionada oferece uma boa solução para um único gráfico, mas quando vários gráficos estão presentes, a barra de cores se estende até a metade do título de quebra de faceta e do texto do eixo. Gostaria que a barra de cores se estendesse apenas da base do título de quebra de faceta até o topo do texto do eixo.

Fazendo o gráfico base

(observe a pequena altura da barra de cores)

library(tidyverse)
library(ggcorrplot)
library(reshape2)

iris %>%
  group_by(Species) %>%
  summarise(correlation = list(cor(across(where(is.numeric))))) %>%
  ungroup() %>%
  mutate(correlation_df = map(correlation, ~ melt(.x, varnames = c("Var1", "Var2")))) %>%
  select(Species, correlation_df) %>%
  unnest(correlation_df) %>%
  ggplot(aes(x = Var1, y = Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient2(limit = c(-1, 1)) +
  labs(x = NULL,
       y = NULL,
       fill = NULL) +
  theme_bw() +
  facet_wrap(~Species)

Usando resposta de pergunta SO semelhante

(observe que a barra de cores se estende até as áreas de texto do título e do eixo)


make_fullsize <- function() structure("", class = "fullsizebar")

ggplot_add.fullsizebar <- function(obj, g, name = "fullsizebar") {
  h <- ggplotGrob(g)$heights
  panel <- which(grid::unitType(h) == "null")
  panel_height <- unit(1, "npc") - sum(h[-panel])
  
  g + 
    guides(fill = guide_colorbar(barheight = panel_height,
                                 title.position = "right")) +
    theme(legend.title = element_text(angle = -90, hjust = 0.5))
}

iris %>%
  group_by(Species) %>%
  summarise(correlation = list(cor(across(where(is.numeric))))) %>%
  ungroup() %>%
  mutate(correlation_df = map(correlation, ~ melt(.x, varnames = c("Var1", "Var2")))) %>%
  select(Species, correlation_df) %>%
  unnest(correlation_df) %>%
  ggplot(aes(x = Var1, y = Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient2(limit = c(-1, 1)) +
  labs(x = NULL,
       y = NULL,
       fill = NULL) +
  theme_bw() +
  coord_cartesian(expand = FALSE) +
  make_fullsize() +
  facet_wrap(~Species)

Criado em 2024-12-30 com reprex v2.1.1

Eu brinquei com a mudança do valor de panel_heightpor exemplo, panel_height <- unit(0.95...o que fornece uma resposta próxima, mas imprecisa. Essa resposta também não escala bem ao tornar os gráficos maiores/menores.

  • 1 respostas
  • 26 Views
Martin Hope
tassones
Asked: 2024-11-18 22:46:15 +0800 CST

erro de análise facet_wrap ao usar símbolo maior ou igual a

  • 7

Estou tentando alterar o título de dois gráficos feitos usando facet_wrap(), um dos quais tem um símbolo maior que ou igual a ( >=). Posso fazer os gráficos analisarem o título, mas assim que coloco o símbolo >= entre parênteses, os títulos falham na análise. Como posso fazer os títulos analisarem quando o símbolo >= está entre parênteses?

library(tidyverse)

mtcars %>% 
  mutate(size = ifelse(hp >= 100, 'greater', 'lesser'),
         size = factor(size, levels = c("greater", "lesser"),
                       labels = c("Horsepower >= 100", "Horsepower < 100"))) %>% 
  ggplot(aes(x = mpg, y = wt)) +
  geom_point() +
  theme_bw() +
  facet_wrap(~size, labeller = label_parsed)

Falha na análise ao colocar >= entre parênteses.


mtcars %>% 
  mutate(size = ifelse(hp >= 100, 'greater', 'lesser'),
         size = factor(size, levels = c("greater", "lesser"),
                       labels = c("Horsepower (>= 100)", "Horsepower (< 100)"))) %>% 
  ggplot(aes(x = mpg, y = wt)) +
  geom_point() +
  theme_bw() +
  facet_wrap(~size, labeller = label_parsed)
#> Error in parse(text = as.character(values)): <text>:1:13: unexpected '>='
#> 1: Horsepower (>=
#>                 ^

Criado em 2024-11-18 com reprex v2.1.1

  • 2 respostas
  • 45 Views
Martin Hope
tassones
Asked: 2024-11-14 05:11:41 +0800 CST

Ter legenda mostrando cor de preenchimento E ter geom_points com contorno preto

  • 5

Nas figuras abaixo, eu gostaria que a legenda mostrasse a cor de preenchimento para a variável 'color'. Eu também gostaria que todos os pontos no gráfico tivessem um contorno preto. Parece que eu posso fazer um ou outro, mas não ambos (ou seja, a legenda tem cor e os pontos têm contorno preto). Eu selecionei formas que têm um contorno preto, como pode ser visto na legenda 'cut'.

Perguntas SO semelhantes:

  • Contorno preto ao redor do geom_point e legenda de correspondência de cores - ggplot
  • Os pontos ggplot têm cor, mas os pontos da legenda (guia) são todos pretos

Mantém o contorno preto ao redor dos pontos, mas a legenda fica toda preta

library(tidyverse)

diamonds %>% 
  slice(1:20) %>% 
  ggplot(aes(x = x,
             y = y,
             shape = cut,
             fill = color)) +
  geom_point(size = 3,
             alpha = 0.8) +
  scale_shape_manual(values = c('Ideal' = 21,
                                'Premium' = 22,
                                'Good' = 23,
                                'Very Good' = 24,
                                'Fair' = 25)) +
  scale_fill_manual(values = c('E' = '#ca0020',
                               'F' = '#f4a582',
                               'H' = '#ffffbf',
                               'I' = '#92c5de',
                               'J' = '#0571b0')) +
  theme_bw()

Remove o contorno preto ao redor dos pontos, mas a legenda é toda colorida

diamonds %>% 
  slice(1:20) %>% 
  ggplot(aes(x = x,
             y = y,
             shape = cut,
             fill = color,
             color = color)) +
  geom_point(size = 3,
             alpha = 0.8) +
  scale_shape_manual(values = c('Ideal' = 21,
                                'Premium' = 22,
                                'Good' = 23,
                                'Very Good' = 24,
                                'Fair' = 25)) +
  scale_fill_manual(values = c('E' = '#ca0020',
                               'F' = '#f4a582',
                               'H' = '#ffffbf',
                               'I' = '#92c5de',
                               'J' = '#0571b0')) +
  scale_color_manual(values = c('E' = '#ca0020',
                                'F' = '#f4a582',
                                'H' = '#ffffbf',
                                'I' = '#92c5de',
                                'J' = '#0571b0')) +
  theme_bw()

EDIT: Eu entendo que posso adicionar um segundo conjunto de pontos um pouco maior para obter uma solução alternativa, mas isso é desleixado

diamonds %>% 
  slice(1:20) %>% 
  ggplot(aes(x = x,
             y = y,
             shape = cut,
             fill = color,
             color = color)) +
  geom_point(size = 3.5,
             alpha = 0.5,
             color = 'black') +
  geom_point(size = 3,
             alpha = 0.8) +
  scale_shape_manual(values = c('Ideal' = 21,
                                'Premium' = 22,
                                'Good' = 23,
                                'Very Good' = 24,
                                'Fair' = 25)) +
  scale_fill_manual(values = c('E' = '#ca0020',
                               'F' = '#f4a582',
                               'H' = '#ffffbf',
                               'I' = '#92c5de',
                               'J' = '#0571b0')) +
  scale_color_manual(values = c('E' = '#ca0020',
                                'F' = '#f4a582',
                                'H' = '#ffffbf',
                                'I' = '#92c5de',
                                'J' = '#0571b0')) +
  theme_bw()

Criado em 2024-11-13 com reprex v2.1.1

  • 2 respostas
  • 42 Views
Martin Hope
tassones
Asked: 2024-04-23 23:10:41 +0800 CST

Rótulos sobrescritos e subscritos na matriz de correlação usando ggcorrplot

  • 8

Estou tentando customizar os rótulos em uma matriz de correlação feita usando o ggcorrplotpacote. No entanto, não consigo fazer com que a formatação sobrescrito ou subscrito funcione. Como posso exibir os rótulos corretamente sem usar caracteres Unicode?

library(tidyverse)
library(ggcorrplot)

# Example Data
M <- cor(mtcars)[1:3,1:3]

# Attempt 1: Not formatted correctly
colnames(M) <- c("Temperature\n (^o C)", "PO[4]^2", "Oxygen\n (mg L^-1)")
rownames(M) <- c("Temperature\n (^o C)", "PO[4]^2", "Oxygen\n (mg L^-1)")

ggcorrplot(M,
           type = "lower",
           lab = TRUE,
           ggtheme = theme_bw())


# Attempt 2: Produces error message
ggcorrplot(M,
           type = "lower",
           lab = TRUE,
           scale_x_discrete(labels = c("mpg" = expression(Temperature~(degree*C)),
                                       "cyl" = expression(PO[4]^2),
                                       "disp" = expression(Oxygen~(mg~L^-1)))),
           scale_y_discrete(labels = c("mpg" = expression(Temperature~(degree*C)),
                                       "cyl" = expression(PO[4]^2),
                                       "disp" = expression(Oxygen~(mg~L^-1)))),
           ggtheme = theme_bw())
#> Error in match.arg(method): 'arg' must be NULL or a character vector

Criado em 23/04/2024 com reprex v2.1.0

  • 2 respostas
  • 23 Views
Martin Hope
tassones
Asked: 2024-04-20 04:53:13 +0800 CST

Remova a linha horizontal entre os rótulos facet_wrap

  • 6

Estou usando ggplotpara fazer uma figura de três painéis. Quero facet_wrappor estado e incluir o nome da cidade no rótulo, porém, quando faço isso, aparece uma linha horizontal entre os nomes do estado e da cidade. Como posso remover a linha horizontal?

library(tidyverse)

set.seed(333)

# Example dataset
df <- data.frame(
  state = c("North Carolina","North Carolina","North Carolina",
            "North Carolina","North Carolina","North Carolina",
            "Virginia","Virginia","Virginia"),
  city = c("Boone","Boone","Boone",
           "Elizabeth City","Elizabeth City","Elizabeth City",
           "Norfolk","Norfolk","Norfolk"),
  year = rep(seq(2000,2004,2),3),
  value = round(rnorm(9,100,50))
)

# Example plot (how can I remove the horizontal line between the state and city labels?)
df %>%
  ggplot(aes(x = year, y = value)) +
  geom_point() +
  theme_bw() +
  facet_wrap(~state+city)

Criado em 19/04/2024 com reprex v2.1.0

  • 2 respostas
  • 32 Views
Martin Hope
tassones
Asked: 2024-04-05 03:52:08 +0800 CST

ggplot2: Alinhe os pontos com a data real quando a data for um fator

  • 5

Fiz uma série temporal que tem um eixo x descontínuo, porém, só sei fazer esse tipo de gráfico quando o eixo x Dateé um fator. O problema que isso causa é que os pontos no gráfico se alinham com o fator que sugere que os pontos são coletados no primeiro dia do mês, o que não é verdade. Existe alguma maneira de alinhar os pontos com o real, Datemantendo o eixo x descontínuo?

Exemplo

library(tidyverse)
library(grid)

set.seed(333)

# Create example dataset
df <- data.frame(
  Group = c('A','A','A','A','A','A','B','B','B','B','B','B'),
  Date = rep(c('2021-07-13','2021-08-22','2021-09-04','2022-06-20','2022-07-08','2022-08-25'), 2),
  Value = round(rnorm(12,50,20)))

# Do some data wrangling
df <- df %>%
  mutate(Date = as.Date(Date),
         year = year(Date),
         mon = month(Date),
         mon_abb = month.abb[mon],
         monYear = paste(mon_abb,year, sep = ' ')) %>%
  select(!c(mon,year,mon_abb))

# Will need the month abbreviation
sample_dates <- unique(df$monYear)

# Make figure
# Note: the points align on the month but I would like them to
# align with the actual calendar Date (i.e., all points would move
# to the right because none were collected on the 1st of the month)
ggplot(data = df, aes(x = factor(Date), y = Value, group = Group)) +
  geom_point(aes(fill = Group), size = 3, shape = 21, color = "black") +
  scale_x_discrete(labels = substr(sample_dates, 1, 3)) + # Pulls the month abb. for x-axis label
  xlab("") +
  theme_bw() +
  theme(plot.margin = unit(c(1, 1, 2, 1), "lines"),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
        legend.position = 'right',
        panel.border = element_blank()) +
  guides(fill = guide_legend(nrow = 2)) +
  coord_cartesian(clip = 'off', ylim = c(0, 100)) +
  annotation_custom(rectGrob(gp = gpar(fill = NA))) +
  annotate(geom = "text", x = 2, y = -16, label = 2021, size = 4.5) +
  annotate(geom = "text", x = 5, y = -16, label = 2022, size = 4.5) +
  annotate(geom = 'rect', xmin = 3.4, xmax = 3.6, ymin = -10, ymax = -3, fill = 'white') +
  annotate(geom = 'segment', x = c(3.4,3.6), xend = c(3.4,3.6), y = -8, yend = -3)

Criado em 04/04/2024 com reprex v2.0.2

  • 1 respostas
  • 28 Views
Martin Hope
tassones
Asked: 2024-01-17 03:58:22 +0800 CST

Como adicionar hora a uma coluna de data e hora, se faltar hora

  • 6

Eu tenho um dataframe com uma coluna de data e hora espaçada em intervalos de 4 horas. Quando o componente de hora deveria ser 00:00:00(hora: minuto: segundo), a hora está faltando na data. Como posso adicionar 00:00:00a data quando falta tempo?

Dados de exemplo

dat <- data.frame(
  dateTime = c('2016-07-01',
               '2016-07-01 04:00:00',
               '2016-07-01 08:00:00',
               '2016-07-01 12:00:00',
               '2016-07-01 16:00:00',
               '2016-07-01 20:00:00',
               '2016-07-02')
)

str(dat)
#> 'data.frame':    7 obs. of  1 variable:
#>  $ dateTime: chr  "2016-07-01" "2016-07-01 04:00:00" "2016-07-01 08:00:00" "2016-07-01 12:00:00" ...

dat
#>              dateTime
#> 1          2016-07-01
#> 2 2016-07-01 04:00:00
#> 3 2016-07-01 08:00:00
#> 4 2016-07-01 12:00:00
#> 5 2016-07-01 16:00:00
#> 6 2016-07-01 20:00:00
#> 7          2016-07-02

Eu poderia usar isso abaixo, no entanto, meu conjunto de dados real tem linhas faltando, então estou procurando uma alternativa onde possa adicionar 00:00:00quando não houver tempo.

library(tidyverse)

dat <- dat %>%
  mutate(dateTime_cor = seq(from = as.POSIXct("2016-07-01 00:00:00"),
                            to = as.POSIXct("2016-07-02 00:00:00"),
                            by = "4 hours")) %>%
  select(-dateTime)

str(dat)
#> 'data.frame':    7 obs. of  1 variable:
#>  $ dateTime_cor: POSIXct, format: "2016-07-01 00:00:00" "2016-07-01 04:00:00" ...

dat
#>          dateTime_cor
#> 1 2016-07-01 00:00:00
#> 2 2016-07-01 04:00:00
#> 3 2016-07-01 08:00:00
#> 4 2016-07-01 12:00:00
#> 5 2016-07-01 16:00:00
#> 6 2016-07-01 20:00:00
#> 7 2016-07-02 00:00:00

Criado em 16/01/2024 com reprex v2.0.2

  • 1 respostas
  • 22 Views
Martin Hope
tassones
Asked: 2023-12-14 00:59:22 +0800 CST

Permitir espaço no nome da variável do gráfico de dispersão R brilhante

  • 5

Estou desenvolvendo um aplicativo brilhante no Rstudio. O aplicativo cria dois gráficos: uma série temporal e um gráfico de dispersão. As variáveis ​​que estão sendo plotadas são Water Temperaturee Air Temperature. O gráfico de série temporal lida com o espaço nos nomes das variáveis ​​sem problemas. No entanto, recebo um erro com os gráficos de dispersão associados aos nomes das variáveis.

O erro é:

Warning: Error in parse: <text>:1:7: unexpected symbol
1: Water Temperature
          ^

ou

Warning: Error in parse: <text>:1:5: unexpected symbol
1: Air Temperature
        ^

Suspeito que esses erros tenham algo a ver com o espaço entre Água/Ar e Temperatura. É fundamental manter o espaço em vez de substituí-lo por um sublinhado ou algum outro preenchimento de espaço. Como posso manter o espaço no nome da variável ao fazer gráficos de dispersão?

library(tidyverse)
library(shiny)
library(shinydashboard)

# Create example dataset
set.seed(123)

dat <- data.frame(
  Time = rep(seq(1,10,1), times = 2),
  Site = rep(c('A', 'B'), each = 10),
  Water_Temperature = round(rnorm(20, mean = 20, sd = 5)),
  Air_Temperature = round(rnorm(20, mean = 25, sd = 3))
)

dat <- dat %>%
  rename(`Water Temperature` = Water_Temperature,
         `Air Temperature` = Air_Temperature)

dat_long <- dat %>%
  pivot_longer(cols = c("Water Temperature","Air Temperature"),
               names_to = 'Variable',
               values_to = 'Value') %>%
  arrange(Site, Time)

# Define user interface for time series and scatterplot
ui.R <- dashboardPage(
  dashboardHeader(title = "Example", titleWidth = 350),
  dashboardSidebar(
    tags$head(
      tags$style(
        HTML("
          .sidebar-footer {
            text-align: center;
          }
          .sidebar-logo {
            display: flex;
            align-items: center;
            justify-content: center;
          }
          .sidebar-menu a span {
            font-size: 24px;
          }
        ")
      )
    ),
    sidebarMenu(
      menuItem("Time Series", tabName = "time_series", icon = icon("chart-line")),
      menuItem("Scatterplot", tabName = "scatter_plot", icon = icon("chart-line"))
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(
        tabName = "time_series",
        fluidRow(
          box(
            title = "Time Series",
            status = "primary",
            solidHeader = TRUE,
            width = 2,
            selectInput("siteInput", "Select Site", choices = unique(dat_long$Site)),
            selectInput("variableInput", "Select Variable", choices = unique(dat_long$Variable))
          ),
          box(
            title = "Plot",
            status = "primary",
            solidHeader = TRUE,
            width = 10,
            plotOutput("timeSeriesPlot", height = "700px")
          )
        )
      ),
      tabItem(
        tabName = "scatter_plot",
        fluidRow(
          box(
            title = "Scatterplot",
            status = "primary",
            solidHeader = TRUE,
            width = 2,
            selectInput("siteInput2", "Select Site", choices = unique(dat_long$Site)),
            selectInput("xAxisInput", "Select X-axis Variable:", choices = unique(dat_long$Variable)),
            selectInput("yAxisInput", "Select Y-axis Variable:", choices = unique(dat_long$Variable))
          ),
          box(
            title = "Plot",
            status = "primary",
            solidHeader = TRUE,
            width = 10,
            plotOutput("scatterPlot", height = "700px")
          )
        )
      ),
      tabItem(
        tabName = "site_info",
        fluidPage(
          fluidRow(
            selectInput("siteInput3", "Select Site", choices = unique(dat_long$Site)),
            column(4, dataTableOutput('table'))
          )
        )
      )
    )
  )
)

# Define server
server.R <- function(input, output) {
  output$timeSeriesPlot <- renderPlot({
    filteredData <- dat_long %>%
      filter(Site == input$siteInput, Variable == input$variableInput)
    
    variableName <- unique(filteredData$Variable)
    yLabel <- ifelse(variableName == "Water Temperature", expression(Water~Temperature~(degree*C)),
                     ifelse(variableName == "Air Temperature", expression(Air~Temperature~(degree*C))))
    
    ggplot(filteredData, aes(x = Time, y = Value)) +
      geom_line() +
      geom_point() +
      scale_x_continuous(breaks = seq(1,10,1)) +
      labs(x = "", y = yLabel,
           title = paste('Site:', input$siteInput)) +
      theme_bw()
  })
  
  output$scatterPlot <- renderPlot({
    filteredData2 <- dat_long %>%
      filter(Site == input$siteInput2)
    
    # Create a reactive label to display the units for the selected variable on the x and y axes
    xLabel <- reactive({
      switch(input$xAxisInput[1],
             `Air Temperature` = expression(Air~Temperature~(degree*C)),
             `Water Temperature` = expression(Water~Temperature~(degree*C)))
    })
    
    yLabel <- reactive({
      switch(input$yAxisInput[1],
             `Air Temperature` = expression(Air~Temperature~(degree*C)),
             `Water Temperature` = expression(Water~Temperature~(degree*C)))
    })
    
    ggplot(filteredData2, aes_string(x = input$xAxisInput, y = input$yAxisInput)) +
      geom_point() +
      labs(x = xLabel(), y = yLabel(),
           title = paste('Site:', input$siteInput2)) +
      theme_bw()
  })
}

# Run the application
shinyApp(ui = ui.R, server = server.R)

O gráfico de série temporal funciona insira a descrição da imagem aqui O gráfico de dispersão não funciona insira a descrição da imagem aqui

  • 1 respostas
  • 11 Views
Martin Hope
tassones
Asked: 2023-09-27 01:44:13 +0800 CST

Aplicativo Shiny: gráfico de dispersão reativo a múltiplas entradas

  • 5

Estou tentando criar um aplicativo brilhante que permite ao usuário selecionar um grupo ( cut) e uma variável (ou seja depth,, tableou price) para os eixos x e y de um gráfico de dispersão. O código da UI abaixo funciona bem para permitir que o usuário faça as seleções, no entanto, estou tendo problemas com o servidor. Acho que o problema é filtrar as seleções da interface do usuário em dois quadros de dados e usá-los rbind()para combiná-los, mas não sei outra maneira de proceder.

Como posso ggplot()reagir às duas opções que os usuários têm para os eixos x e y?

Exemplo:

library(shiny)
library(tidyverse)

dat <- diamonds %>%
  select(cut,depth,table,price) %>%
  pivot_longer(cols = c('depth','table','price'),
               names_to = 'Variable',
               values_to = 'Value')

ui <- fluidPage(
  selectInput("x_cut", "X-axis Cut", choices = unique(dat$cut)),
  selectInput("x_variable", "X-axis Variable", choices = unique(dat$Variable)),
  selectInput("y_cut", "Y-axis Cut", choices = unique(dat$cut)),
  selectInput("y_variable", "Y-axis Variable", choices = unique(dat$Variable)),
  plotOutput("plot")
)

server <- function(input, output) {
  output$plot <- renderPlot({
    filtered_xdat <- dat %>%
      filter(cut == input$x_cut, Variable == input$x_variable)
    
    filtered_ydat <- dat %>%
      filter(cut == input$y_cut, Variable == input$y_variable)
    
    filtered_dat <- rbind(filtered_xdat, filtered_ydat)
      
    filtered_dat %>%
      ggplot() +
      geom_point(aes(x = input$x_variable,
                     y = input$y_variable)) +
      geom_point()
  })
}

shinyApp(ui, server)

# Warning: Error in geom_point: Problem while setting up geom.
# ℹ Error occurred in the 2nd layer.
# Caused by error in `compute_geom_1()`:
#   ! `geom_point()` requires the following missing aesthetics: x and y

Eu tentei isso:

server <- function(input, output) {
  output$plot <- renderPlot({

    filtered_xdat <- dat %>%
      filter(cut == input$x_cut,
             xVariable == input$x_variable) %>%
      as.data.frame()

    filtered_ydat <- dat %>%
      filter(cut == input$y_cut,
             yVariable == input$y_variable) %>%
      as.data.frame()

    ggplot() +
      geom_point(aes(x = filtered_xdat$xVariable, y = filtered_ydat$yVariable)) +
      theme_minimal()
  })
}

# Warning: Error in filter: ℹ In argument: `xVariable == input$x_variable`.
# Caused by error:
#   ! object 'xVariable' not found

e isso também:

server <- function(input, output) {
  output$plot <- renderPlot({

    filtered_dat <- dat %>%
      filter(cut %in% c(input$x_cut, input$y_cut),
             Variable %in% c(input$x_variable, input$y_variable))
    
    ggplot(data = filtered_dat, aes(x = !!sym(input$x_variable), y = !!sym(input$y_variable))) +
      geom_point() +
      theme_minimal()
  })
}

# Warning: Error in geom_point: Problem while computing aesthetics.
# ℹ Error occurred in the 1st layer.
# Caused by error in `FUN()`:
#   ! object 'depth' not found
  • 1 respostas
  • 28 Views
Martin Hope
tassones
Asked: 2023-09-06 03:54:02 +0800 CST

Converta o formato de data aaaa.mmd(d) para aaaa-mm-dd em R

  • 7

Estou trabalhando com um formato de data antigo onde os dois primeiros dígitos representam o ano do século XX. As duas primeiras casas decimais são o mês (ou seja, 01-12) e a terceira e quarta casas decimais são o dia do mês (ou seja, 01-31). O problema é que os dias que terminam em zero (ou seja, 10, 20, 30) têm o zero à direita eliminado, de modo que alguns formatos de data têm apenas três casas decimais.

Como posso restaurar o zero à direita para poder converter esse formato de data antigo em um formato de data moderno (ou seja, aaaa-mm-dd)?

Exemplo:

library(tidyverse)

# Example data

xx <- data.frame(yr_mo_da = c('89.1208','89.1209','89.121', '89.1211'))

# My attempt to extract year, month, day from the old date format
# NOTE how the day is not extracted properly because there is not a fourth decimal place on Dec. 10

xx$year <- as.numeric(gsub("\\..*","",xx$yr_mo_da))
xx$month <- as.numeric(sub("^[0-9]+\\.([0-9]{2}).*", "\\1", xx$yr_mo_da))
xx$day <- as.numeric(sub("^[0-9]+\\.[0-9]{2}([0-9]{2}).*", "\\1", xx$yr_mo_da))
xx
#>   yr_mo_da year month    day
#> 1  89.1208   89    12  8.000
#> 2  89.1209   89    12  9.000
#> 3   89.121   89    12 89.121
#> 4  89.1211   89    12 11.000

# Create modern date format

xx <- xx %>%
  mutate(year = year + 1900,
         Date = make_date(year,month,day)) %>%
  select(-c(yr_mo_da,year,day,month))
xx
#>         Date
#> 1 1989-12-08
#> 2 1989-12-09
#> 3       <NA>
#> 4 1989-12-11

A saída correta deve ser semelhante a esta:

xx
#>         Date
#> 1 1989-12-08
#> 2 1989-12-09
#> 3 1989-12-10
#> 4 1989-12-11

Criado em 05/09/2023 com reprex v2.0.2

  • 2 respostas
  • 30 Views

Sidebar

Stats

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

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

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

    • 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

    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
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +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

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