Thueson Family Graphs

Author

Copeland Carter

Published

July 4, 2024

Code
# data = gsheet2tbl('https://docs.google.com/spreadsheets/d/1oUMIpE_Elh_CYD7DFbT1vbYxFZNYUDK2QxFqFDk4xII/edit#gid=2008169700') # Original Data
data = gsheet2tbl('https://docs.google.com/spreadsheets/d/1oUMIpE_Elh_CYD7DFbT1vbYxFZNYUDK2QxFqFDk4xII/edit?gid=0#gid=0') # Manually cleaned data (it was easier to edit it in the spreadsheet)
Code
questions = colnames(data)
colnames(data) = c('timestamp', 'name', 'birthday', 'parents', 'names.indexed', 'ordinances.self', 'ordinances.dead', 'fav.recipe', 'gen', 'tech.savviness', 'injuries', 'num.trips', 'trips', 'num.pets', 'pets', 'fav.part', 'suggested.activity', 'suggested.reunion.location', 'jobs', 'most.told.story', 'oldest', 'rating', 'fav.game', 'secret', 'best.advice', 'worst.advice', 'coming')
data$age = floor((today() - mdy(data$birthday)) / 365) |> as.integer()
data$first.name.raw = str_split(data$name, pattern=' ') |> map(~ .x[[1]]) |> as.character()
Code
# Function to make names unique
make_names_unique <- function(names) {
    # Create a data frame to store the unique names and their counts
    name_counts <- data.frame(names, count = ave(names, names, FUN = seq_along))

    # Append the count to the names if count > 1
    name_counts <- name_counts %>%
        mutate(unique_names = ifelse(count == 1, names, str_c(names, " #", count)))

    return(name_counts$unique_names)
}

data$first.name = make_names_unique(data$first.name.raw)
Code
# Some people (the Hardy's) put in ridiculous data
# This is fun for some graphs, but not others
serious_data = data |>
    filter(tech.savviness != 10 | first.name == 'Copeland') |>
    filter(!(first.name.raw %in% c('Bethany', 'Trump', 'Biden', 'Wuss')))
Code
theme_set(theme_xkcd())
theme_update(
    plot.background = element_rect(fill='#222222'),
    panel.grid.major = element_line(color='#807f7f'),
    panel.background = element_rect(fill='#3f3f3f'),
    axis.text = element_text(color='gray90'),
    plot.title = element_text(color='gray90', size=25),
    plot.subtitle = element_text(color='gray90', size=20),
    # plot.subtitle = text,
    # legend.text = text,
    # axis.text.x = text,
    # axis.text.y = text,
    text=element_text(color='gray90', size=20),
)
color = '#226796'
Code
# I got sick of repeatedly doing this by hand
geom_arrow = function(x, y, dx, dy, text='', head='closed', text_dx=0, text_dy=0, arrow_head_len_in=.15){
    return(list(
        annotate('segment', xend=x, yend=y, x=x+dx, y=y+dy,
            arrow=arrow(type = head, length=unit(arrow_head_len_in, 'inches')),
            color=theme_get()$text$colour,
        ),
        annotate('text', x=x+dx+text_dx, y=y+dy+text_dy,
            label=text,
            family=theme_get()$text$family,
            size=theme_get()$text$size / 3,
            color =theme_get()$text$colour,
        )
    ))
}
Code
mean.age = mean((data %>% filter(., !is.na(age)))$age)
ggplot(data, aes(x=age)) +
    geom_vline(xintercept = 0, color='white') +
    geom_histogram(bins=25, fill=color, color=theme_get()$panel.background$fill) +
    # scale_x_binned(transform = 'sqrt')
    geom_arrow(x=1000, y=2, dx=-40, dy=2, text='2/3 Nephites', text_dy=1) +
    geom_vline(xintercept = mean.age, color='red') +
    annotate('text', x=mean.age + 130, y=18, label=paste0('Average age is: ', round(mean.age, 1)), color=theme_get()$text$colour, size=6, family=theme_get()$text$family,) +
    geom_arrow(x=-73, y=1, dx=80, dy=10, text='One person from the future', text_dy=1) +
    labs(
        title='The Distrobution of Ages at the Family Reunion',
        y='Number of People',
        x='Age'
    )

Code
data |> arrange(desc(age)) |> head(8) |> select(name, age) |> clipr::write_clip(allow_non_interactive = T)
Code
data |>
    filter(!is.na(rating)) |>
ggplot(aes(x=rating)) +
    geom_histogram(bins=11, color=theme_get()$panel.background$fill, fill=color) +
    scale_x_binned(breaks = 0:10) +
    labs(title = "How much Everyone Enjoys the Family Reunion")

Code
serious_data %>%
    filter(injuries > 1) |>
ggplot(aes(x=reorder(first.name, desc(injuries)), y=injuries)) +
    geom_col(fill=color) +
    geom_arrow(x=3.5, y=8, dx=3, dy=-.5, text='Clearly, I underestimated how much some people get hurt (TYLER)', text_dy=-.2) +
    theme(axis.text.x = element_text(angle=45,vjust = .7)) +
    labs(title='People who were Injured the Most in the Last Year', x='')

Code
ggplot(serious_data |> filter(num.trips > 2), aes(x=reorder(first.name, desc(num.trips)), y=num.trips)) +
    geom_col(fill=color) +
    theme(axis.text.x = element_text(angle=45, vjust = .9, hjust = .5)) +
    scale_y_continuous(breaks=seq(0, 9, 1)) +
    labs(title = 'Who takes the Most Trips', x='', y='Number of trips')

Code
# eval: false
# echo: false
# I cannot for the life of me figure out why it's doing this. It just started doing it randomly. I'm starting
# to seriously suspect a bug in ggplot2.
honorable_mentions = c('Rice and butter', 'Pinto beans, Kale, and herbs on sourdough bread toasted with cheese on top.', 'Mash sauce', 'I love food', 'Horse apple', 'Danaes famous Grilled salmon', 'Chaos', 'Chinese takeout', 'Anything grandma makes', 'Black bean, rice, bell pepper, and mango with a lime dressing')
# honorable_mentions = c()
data %>%
    group_by(fav.recipe) %>%
    mutate(order = n()) |>
    filter(!is.na(fav.recipe)) |>
    filter(order > 1 | fav.recipe %in% honorable_mentions) |>
ggplot(aes(y=reorder(fav.recipe, order))) +
    geom_bar(orientation = 'y', stat='count', fill=color) +
    scale_x_continuous(breaks=0:6) +
    annotate('text', x=3, y=10.7, label='Honorable Mentions') +
    geom_hline(yintercept = 10.5, color='#cc312c') +
    labs(title = 'Everyone\'s Favorite Family Recipies', y='', x='Number of people who say it\'s their favorite')
Code
data |>
    group_by(first.name.raw) %>%
    mutate(order = n()) |>
    filter(order > 1) |>
    filter(!is.na(first.name.raw)) |>
ggplot(aes(y=reorder(first.name.raw, order))) +
    geom_bar(fill=color) +
    geom_arrow(x=3.5, y=2.6, dx=-.5, dy=-.7, text='Bethany is REALLY coming', text_dy = -.08) +
    labs(title = 'How Many of Us Share the Same First Name', y='', x='How many times someone with that first name took the survey')

Code
str_split(na.omit(serious_data$ordinances.self), ',') |>
    flatten() |>
    tibble() |>
    rename(Ordinance=1) |>
    mutate(Ordinance=str_trim(Ordinance)) |>
    count(Ordinance) |>
    rename(count=n) |>
    mutate(count = as.character(count), Ordinance=as.character(Ordinance)) |>
ggplot(aes(x=Ordinance, y=count)) +
    geom_col(fill=color) +
    geom_arrow(x=3, y=0, dx=0, dy=.5, "I totally know how to spell initiatiories", text_dy=.05) +
    # scale_y_continuous(breaks = 0:6) +
    labs(title = 'How many live ordinances have happened this year?')

Code
serious_data |>
    filter(age < 200) |>
    arrange(age) |>
ggplot(aes(x=age, y=tech.savviness)) +
    geom_point(color=color, size=3) +
    geom_smooth(method='lm', se=F, na.rm=T) +
    annotate('text', x=92, y=4.6, label='Surprisingly, there doesn\'t seem to be a significant correlation between age and tech savviness', size=5, family=theme_get()$text$family, color=theme_get()$text$colour) +
    labs(y="Tech Savviness", title='Tech Savviness vs. Age')

Code
options(
    # No idea why it's adding bars unless I size it just right
    repr.plot.width=7.56,
    repr.plot.height=8
)
data |>
    filter(!is.na(names.indexed)) |>
    mutate(indexed = ifelse(names.indexed > 0, 'did', "didn't")) |>
    group_by(indexed, label=indexed) |>
    summarize(indexed = n()) |>
ggplot(aes(y=indexed, x='', fill=label, label=glue('{indexed} People {label}'))) +
    geom_col() +
    theme(
        panel.background = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        # axis.text.y = element_blank(),
        panel.grid=element_blank(),
        # axis.text = element_blank(),
        legend.position = 'none',
        plot.title = element_text(hjust=.5),
    ) +
    geom_text(position=position_stack(vjust=.5), family=theme_get()$text$family, size=7) +
    coord_polar(theta='y') +
    labs(x='', y='', title='How many People did Indexing this Year', caption="Sorry, I used the wrong input on the survey")

Code
options(
    # No idea why it's adding bars unless I size it just right
    repr.plot.width=7.59,
    repr.plot.height=8
)
data |>
    filter(!is.na(oldest)) |>
    group_by(oldest, label=oldest) |>
    summarize(oldest = n()) |>
ggplot(aes(y=oldest, x='', fill=label, label=glue('{oldest} said {label}'))) +
    geom_col() +
    theme(
        panel.background = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        # axis.text.y = element_blank(),
        panel.grid=element_blank(),
        # axis.text = element_blank(),
        legend.position = 'none',
        # plot.title = element_text(hjust=.5, family=theme_get()$text$family, size=15),
        # plot.subtitle = element_text(hjust=.5, family=theme_get()$text$family, size=15),
    ) +
    geom_text_repel(position=position_stack(vjust=.5), family=theme_get()$text$family, size=6) +
    coord_polar(theta='y') +
    labs(x='', y='', subtitle='Blair is 83% the oldest sibling', title='Who is the oldest sibling?')

Interesting Lists

Code
lists = data |> select('name', 'worst.advice', 'best.advice', 'secret', 'fav.game', 'most.told.story', 'suggested.reunion.location', 'suggested.activity', 'fav.part')
Code
options(
    repr.matrix.max.rows=200,
    repr.matrix.max.cols=200
)
lists
A tibble: 56 × 9
name worst.advice best.advice secret fav.game most.told.story suggested.reunion.location suggested.activity fav.part
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
Amy Spank your kid When angry with spouse go to sleep I love car chases in movies Water fight My birth story Fiji Fishing Programs & laughing with everyone
Danae Weber Sleep when the baby sleeps... Do the dishes when the baby does the dishes. Do the laundry when the baby does the laundry. Don't be an idiot. Changed my life. I'm a pretty good event planner Spin the bottle Grandma being tired of her boys fighting, so she tossed them in the yard with boxing gloves and told them to duke it out Hawaii Strong gene games Staying up late
Jaren I recommend buying a fleet of transports right now Praise in public I love writing poetry Strip crib Grandpa Dee ALMOST catching a jack rabbit with his bare hands Holland Water skiing Staying up late
Blair NA Cause that is what we do Ham radio operator NA NA NA Pickleball Renewing friendships
McKelle Just take care of yourself Thuesons love and serve one another!! I’m missing the reunion because I’m in Peru! NA NA Camping somewhere new NA Games
Katelan Shakespear It’s ok to go to bed mad at each other Don’t let your kids sleep in your bed. I hate olives Relays, volleyball, pickleball When she was having babies! Anywhere, as long as we have it! Big group games Talking around the camp fire
Kelli Thueson Don’t go to the doctor’s office if you only have one problem. Wait until you have four or five; that’s how you get the most bang for your buck.' My feelings don’t have an IQ I can roll my tongue into the shape of a cover Pickleball Baby Blair throwing up root beer float (i think) on her busty grandma in the car and it going down said grandmother’s blouse. Hawaii Steak on rocks Games at night
Jenelle Thueson NA Keep smiling How many missions have I been on so far? NA Teton Dam flood Place doesn’t matter to me NA Being together sharing testimonies
Lyndee NA NA How many fake teeth I have Signs Grandpa catching the rabbit NA Eat scones Rafting and sunshine
Lauren Don't be helpful Be brave I have no secrets Shaving cream on pop NA NA NA Swimming, okay with cousins
Matt Try it you might like it. Just because it’s fun doesn’t mean it’s not dumb I don’t like hand and foot Pickleball Living in mud lake On Cruise ship Family cruise Relaxing / pickleball
Lydia be yourself you can’t put a price on feeling ✨bonita✨ i’m the funniest person ever i just don’t show it so i don’t make everyone’s brain explode night games with cousins great grandma Annie in the pot BEACH (Ryan Gosling 2024💖🇺🇸) float a different river floating the river
Steve Thueson “Don’t be dumb, even if it’s fun!” Grandma Thueson. JK ‘Cause that’s what we do” Grandpa Dee When I was eight me and my friend went skinny-dipping in the canal around the Rexburg golf course! Water fight Related to William Bradford Philippines Just be there Catching up, seeing young cousins play, testimony meeting, karaoke
Deidra You like seafood, try the calamari 🤮 Enjoy every part of raising little kids🤗 even the exhausting parts, they’ll be big before you know it! I never had a date try for a goodnight kiss without being asked first 🙅🏼‍♀️😘 💦Water games are always fun! 😍 How Grandpa Dee is the most amazingly handsome guy there is! Nobody’s got muscles and those gorgeous blue eyes like grandpa 🥰 Somewhere 😎 sunny, by hiking and swimming, call about the 🇵🇭Philippines? Hugs all around 🥰 😁Visiting, catching up with everyone.
Donna Burrows Thueson If somebody gave me bad advice, I put it out of my mind forever when I discovered its value Treat your husband like a king and he will treat you like a queen I was a champion Jack’s player in the fourth grade Hand and Foot NA France for the Olympics Talk some genealogy All of it
Tacy Kirkham Eat that Connection is not too much and not too little. I have a book I would like to publish one day 9 square Grandpa and her kissin DA Ranch Gestures The peeps!!
Susan Don’t go to bed angry Believe in God I feel guilt about how much I love clay Pickleball William Bradford Stanley Painting, carving Talking around a fire
Sup Don’t go to bed angry Pick your battles Owned 32 cars in 25 years of marriage Pickleball Living in a pig sty when first married Oregon Coast 4 wheeling Floating the river
Copeland Carter Do unto others as you would have others do unto you (not a joke, terrible advice) If you're standing on train tracks, and there's a train coming, you don't dig in your heals, you get off the tracks. I love rollerblading Poo Head The time she and grandpa were in the cemetery and grandpa ran off and tried to lose her The moon Skeet Shooting Free food
Monty Don’t let the son go down on your wrath in a marriage Your most valuable asset is your own capacity to earn. Or fight naked. I sneak raisins 9 square Something about Governor Bradford Mount Vernon Patriotic moments Catching up conversations
Madilyn Don't join the moshpit Don't fall down in a moshpit Like to be in the center of the moshpit Moshpit Dave's conception The club Moshpit The moshpit
Biden Work at the homestead Coconut oil My name Kube Dave’s conception Anywhere but sams Mock congress Copeland
Trump Work at the homestead Coconut oil Who I am Avoiding the aunts Dave’s conception Anywhere but Sam’s Blair and Amy debat Watching Blair and Amy
Wuss boy NA NA NA NA Dave’s conception Only Sam’s Scuba dive Copland
Noah To ignore my dreams Probably shouldn’t kiss me cousins I think there are hot cousins Spin bottle Dave’s conception My house Spin the bottle The hot cousins
Brigham Don’t marry Kali Don’t be a dancer I had a crush on Hannah Free babysitting Dave’s conception The temple Pee into a toilet at the same time The end
Ammon Come to earth Talk to Blake about insurance I’m gay Won’t be there Dave’s conception Amy’s backyard Who’s the best kisser Starring at noah
Kali Try everything Love everyone How wise I am Art Dave’s conception The sawtooths Card games Talking
Bethany Don’t swear Always ALWAYS keep your garments on It’s a wig Shaving cream in my hair Dave’s conception On the beach End early Leaving
Bethany Choose female Don’t eat the yellow snow I’m bald Back rubs Dave’s conception Sawtooths Seeing all your beautiful faces Everything
Bethany Listen to others. I have only given good advice. Never taken it. I am filled with hate Fighting Dave’s conception On the river Kayaking Fighting
Dave Do unto other as was done unto toy Correct way to conceive Definitely not my conception Talking to my family My conception Here on the mission Pork and beans Blair and Amy arguing
Jordan Hardy Don’t live by Blake Be like Blake I love Blake Anything with Blake Dave’s conception Blake’s house Talk to blake Blake
Autum Hardy Don’t vote Biden Vote biden I’m a liberal Poo Head Dave’s conception The abortion clinic Chew on one piece of jerky all day Hearing about Dave’s conception
Jordan Hardy NA NA NA Hand and Foot NA Boise A group run/walk The Family
Savannah Hardy Twins are easy Be yourself and the people who love that personality will be never force you to change for them Both my thumbs are double jointed Hand and Foot When she forced her husband to get up one night to help when everyone was vomiting and other than that he never helped with the kids The Boise area ranch Skits with mixed family teams The family games
Bethany Get a dog Get a dog I really really want to do some arctic kayaking. Probably in Svalbard. Spoons Making her sons beat each other up Some awesome national park like Glacier or Zions or Yosemite Something water based Catching up
Carlene NA NA NA NA NA NA NA Visiting
Shane Ririe NA NA NA NA NA NA NA NA
Addi Hardy Alex tells me not to list w to good people. Mom lets me play video games with her. I’m a princess. When I grow up I will live in a castle. Candyland She’s never told me a story The beach Snow cones The little sand excavator toy
Kali That McDonald’s has good fries… 🥴 Don’t go to bed mad at your spouse. I was offered a college scholarship to play soccer way back when! NA Kim sitting cross legged on the floor days after the twin’s birth. Anywhere in the Mountains Evening bonfires Catching up with everyone
Alex Hardy That Addi and I aren’t twins, and we shouldn’t be with each other, and we should be a part, and we don’t eat with each other NA They don’t know how old I am, or my name, and they don’t know what I have in my house, or where my house is. Freeze tag NA NA Sand The sand and the water and the food and paying
Mia Hardy Idk Go on a mission Idk I don’t really play games How grandpa proposed to grandma Where I live Volleyball The food
Braden Pittman NA NA NA NA NA NA NA NA
Qelvin Kirkham Everything happens for a reason/No use crying over spilled milk. Say, Go, Be, Do. I have two living grandparents, neither related to me by blood. All of them Boxing Gloves Florida Airsoft/Nerf battle Games
Shan NA NA NA NA NA NA NA Unstructured time for chatting
Cam NA NA NA NA NA NA NA Unstructured time for chatting
Rudi NA NA NA NA NA NA NA Unstructured time for chatting
Nori NA NA NA NA NA NA NA Unstructured time for chatting
Lacey Follow the food pyramid Go to the temple every week. NA Hand and Foot NA Doesn’t matter where to me, as long as I get to see everyone! Paint Visiting
Tyler Thueson Idk If your gonna be dumb you better be tough I’m a open book Water fight Being poor Camping true camping like palisades big elk creek or moddy Medows or felt or Kilgore Indian rug races The uncles
Dax Thueson NA NA NA NA NA NA NA NA
Ava Thueson NA NA NA NA NA NA NA NA
Tate Thueson NA NA NA NA NA NA NA NA
Mikaela Thueson Just do it NA I’m terrified of hights NA How naughty Tyler was as a little boy ;) Camping in the mountains Fun minute to win it games Testimony meeting
Moriah Carter It's too late to learn something new Nobody gives me advice: I do my own research I completed high school and college in six years total Rummikub Dee not liking onion or celery at the beginning of their marriage. One day he saw her getting onion and celery ready for fricassee and he said don't put it in so she didn't and he said it didn't taste right and she shouldn't make it like that ever again Durango, Colorado Switching out my fair style lemonade for hard lemonade The unholy amount of fair style lemonade I will consume