Action Twitter IWD 2019
Chaque année, le 8 mars, le monde entier célèbre la Journée internationale de la femme (JIF). Bien que cette date soit célébrée de différentes manières, elle a un point commun : la lutte pour l’égalité entre les hommes et les femmes. La année précédente En 2018, un groupe de R-Ladies enthousiastes a pris l’initiative d’un projet d’envergure visant à tweeter sur tous les profils enregistrés dans l’annuaire R-ladies, tout au long de la journée du 8 mars 2018. En février de cette année 2019, Yanina a proposé de suivre leur exemple et de tweeter sur tous les chapitres R-Ladies, tout au long du 8 mars 2019.
L’appel à volontaires de Yanina a reçu une réponse immédiate. En quelques jours, nous avons formé une équipe de R-Ladies brillantes et compétentes, composée de Yanina, Gabriela, Patricia, Roxana et Divya. Yanina a pris les rênes de ce projet fantastique en dressant une liste des tâches à accomplir et tout le monde s’est porté volontaire pour faire ce qu’il pouvait faire. Yanina a proposé d’utiliser le compte twitter de la JIF de 2018, en continuant ce qu’ils avaient construit à l’époque, mais en se concentrant sur l’augmentation de la visibilité des chapitres cette année. Les chapitres R-Ladies sont la base de R-Ladies parce que c’est là que la communauté se rassemble, enseigne et apprend ; là où les expériences sont échangées dans toutes les parties du monde. Les sections soutiennent et amplifient la communauté. Il était logique de les utiliser pour célébrer la JIF2019, et tout le monde a immédiatement adhéré à l’idée.
Le mois suivant et surtout les jours qui ont précédé l’événement ont été une expérience d’apprentissage profonde pour tout le monde, car nous avons travaillé et aidé de toutes les manières possibles. Cet article de blog vous explique ce qui a été fait en coulisses pour faire de la JIF 2019 un immense succès pour R-Ladies.
Avant l’IWD.
Tout d’abord, nous avons invité toutes les fondatrices et organisatrices des chapitres R-Ladies à mettre à jour les informations relatives à leur chapitre sur GitHub. Toutes les organisatrices du monde entier se sont montrées à la hauteur de l’événement et Gabriela a reçu des demandes de mise à jour presque tous les jours !
Ensuite, il était important de mettre de l’ordre dans le compte Twitter en mettant à jour son identité visuelle et en invitant les R-ladies à suivre le compte. Le compte IWDa commencé à suivre tous les chapitres R-Ladies existants. Les comptes Twitter des chapitres du monde entier, R-Ladies Global et même d’autres organisations féminines qui en ont entendu parler ont répondu à l’appel et ont suivi le compte IWD, diffusant activement le message sur ce qu’il faut attendre de l’IWD 2019.
Enfin, les jours précédant la JIF, une campagne a été menée à l’aide d’images créées dans l’outil canva.com par Patricia et Yanina. La première de ces images a été tweetée le 17 février, et près de 25 tweets ont été envoyés à partir de ce jour, jusqu’au 7 mars. Les images informaient les gens de l’événement à venir de la JIF et les invitaient à suivre le compte Twitter de la JIF. Des étiquettes de propriété ont été utilisées pour permettre aux lecteurs malvoyants de savoir ce que disait l’image associée au tweet. Tous ces efforts ont permis d’augmenter de 53 % le nombre d’utilisateurs du compte Twitter R-Ladies IWD. Nous étions prêts à lancer la campagne de la JIF !
La campagne de la JIF
La campagne IWD consistait en 256 tweets programmés pour être diffusés toutes les 12 minutes, de la première heure de la JIF dans la partie la plus orientale du monde jusqu’à la dernière heure de la JIF dans la partie la plus occidentale du monde. La campagne a commencé par mettre en avant l’équipe mondiale de R-Ladies. Elle a été suivie par des tweets dans 4 grandes catégories - des informations sur les chapitres existants, les nouveaux chapitres qui seront bientôt créés, comment créer un nouveau chapitre dans votre ville, et des informations sur R-Ladies Remote que les personnes qui ne veulent pas être liées à des restrictions géographiques peuvent rejoindre. Comme une image vaut mille mots, toutes ces informations ont été présentées sous forme d’images accompagnées de textes pour mettre le message en valeur. Là encore, la plupart des travaux préparatoires ont été réalisés par Yanina, Patricia et Roxana, et le texte accompagnant les images a été rédigé par Divya. Les deux premières catégories d’images étaient même accompagnées d’une carte du monde pour indiquer où se trouvaient les chapitres et d’un lien vers le compte meetup pour que les gens puissent s’y inscrire instantanément. Les images pour Remote, Leadership Team et Global Masters ont été créées à l’aide de Canvas et Yanina est allée plus loin en réalisant une vidéo expliquant comment créer un nouveau chapitre à l’aide de Doodly. Un jeu de “tag si vous connaissez quelqu’un” initié par le compte twitter de la JIF a rapidement fait le tour des chapitres qui se sont tous tagués les uns les autres, les femmes derrière les chapitres et le compte twitter de la JIF R-Ladies alimentant toute l’excitation ! L’excitation a donné lieu à de nombreuses questions et mises à jour de la part des chapitres, anciens et nouveaux, dont la plupart ont été résolues par Gabriela. Si vous vous demandez qui a gagné ce jeu, le compte R_Forwards a eu le plus grand nombre de RT et notre R-Lady à nous, Laura Aci ? n a été la plus taguée !
Ce que nous avons accompli
À l’occasion de la Journée internationale de la femme, le compte R-Ladies IWD a envoyé 417 tweets et retweets en 48 heures, annonçant 231 chapitres nouveaux et existants, l’équipe de direction, l’équipe mondiale, le chapitre à distance de RLadies et des informations sur la façon de créer un nouveau chapitre. Grâce à des photos, des tweets, des liens de rencontres, des tags et des compliments, les expériences partagées de #rladies et #IWD2019 ont rapproché le réseau mondial des R-Ladies sur une seule plateforme Twitter de la JIF. Nous avons ainsi atteint trois objectifs principaux. Tout d’abord, nous avons présenté toutes les sections dans le monde entier afin que les personnes intéressées à participer ou à aider sachent quel est l’endroit le plus proche où s’inscrire. Deuxièmement, nous avons présenté RLadies Remote comme une option pour ceux qui ne peuvent pas assister aux réunions locales. Enfin, nous avons expliqué comment créer un nouveau chapitre. Ce faisant, nous avons appris bien plus que nous ne l’avions prévu, et R-Ladies dispose désormais d’une liste de chapitres à jour que tout le monde peut consulter !
Ce que nous avons appris en tant que volontaires sur ce projet ?
Tout d’abord, une équipe animée ayant un objectif commun peut travailler efficacement et harmonieusement pour atteindre de grands objectifs. Deuxièmement, les équipes ne doivent pas nécessairement être homogènes. Les volontaires de ce projet se trouvaient aux quatre coins du monde, travaillaient dans des fuseaux horaires différents et parlaient des langues différentes. Cela n’a fait qu’ajouter à l’atmosphère de compréhension et a donné à chacun l’occasion d’en apprendre davantage. Troisièmement, chaque membre peut contribuer et chaque contribution, petite ou grande, est précieuse. Une tâche gigantesque peut être réalisée en y travaillant progressivement. Enfin, nous avons eu la joie d’apprendre d’autres femmes R dans différentes parties du monde et de les connaître, et la satisfaction de contribuer à une communauté qui s’efforce de donner à chaque membre la reconnaissance et le soutien nécessaires pour se développer.
L’action R !
Nous sommes des femmes R ! L’utilisation de R faisait donc partie intégrante du projet. Nous fournissons les scripts que nous avons utilisés dans l’encadré ci-dessous, ainsi que quelques liens utiles qui nous ont permis de découvrir les coulisses de Twitter. Le lien le plus important est le blog R-Ladies expliquant l’action Twitter de la JIF 2018. Apprendre à utiliser la magie ici et ici. A blog expliquant comment réaliser des cartes. Le traitement de texte (y compris les caractères non anglais) est expliqué. ici et ici.
Comment les images ont été créées
La liste des chapitres actuels contient des informations sur le pays, la ville, le nom, les organisateurs, le statut et toutes les formes de contact (mail, web, meetup, réseaux sociaux) de tous les chapitres de R-Ladies. Elle est devenue notre principale source de données. Nous avons également utilisé une liste de villes géolocalisées pour réaliser les cartes. Notre objectif était d’obtenir une image avec les composants suivants :
library(readxl)
library(magick)
library(purrr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(maps)
library(ggthemes)
library(stringr)
#R-Ladies Current Chapter
CCRL <- read_excel("D:/Rladies/IWD019/IWD2019/CCRL2.xlsx")
#-List of Latitude and Longitude for Cities of the world
LatLong <- read_excel("D:/Rladies/IWD019/IWD2019/LatLong.xlsx")
#Join for City and State and Country because we have cities with the same name
CCRL <- CCRL %>% inner_join(LatLong, by = c("City", "State/Region", "Country"))
#We have prospective chapters that are being organised so they do not have official accounts yet. We need filter Chapters without Data because the picture will be different
SinData <- CCRL %>%
filter (is.na(CCRL$Meetup)& is.na(CCRL$Twitter) & is.na(CCRL$Email) & is.na(CCRL$Facebook) &
is.na(CCRL$Instagram) & is.na(CCRL$Periscope) & is.na(CCRL$Youtube) & is.na(CCRL$GitHub) &
is.na(CCRL$Website) & is.na(CCRL$Slack))
#Filter Chapters with Data
CCRL <- CCRL %>%
filter(CCRL$Country !='Remote') %>%
anti_join(SinData, by = c("City", "State/Region", "Country"))
#For loop for every row in Current Chapter
#Add 30-40 pixel for each column only in the cases that have data, have to choose the correct logo
#Make a map highlighting the place of the Chapter in the world
#I could not find a way to avoid the for loop
for (i in 1:nrow(CCRL)) { #Line for all the chapters
#We used an R-Ladies template for start the picture
template <- image_read("D:/Rladies/IWD019/IWD2019/RLTemplate.png")
#Add the chapter map
#The world map is generated with all the chapters marked with black dots. The current chapter is marked #with a larger purple dot R-Ladies.
world <- ggplot() +
borders("world", colour = "gray85", fill = "gray80") +
theme_map()
#We have some chapters that belong to two cities, like Resistencia-Corrientes in Argentina, in that case, we must draw two points and not one.
if(!is.na(CCRL$Lat[i])){
map <- world +
geom_point(aes(x = Longitude, y = Latitude, size = 1),
data = CCRL, colour = 'black', alpha = .5) +
geom_point(aes(x = Longitude[i], y = Latitude[i], size = 10),
data= CCRL, colour= 'purple', alpha = .5) +
geom_point(aes(x = Lon[i], y = Lat[i], size = 10),
data= CCRL, colour= 'purple', alpha = .5) +
theme(legend.position="none")
} else {
map <- world +
geom_point(aes(x = Longitude, y = Latitude, size = 1),
data = CCRL, colour = 'black', alpha = .5) +
geom_point(aes(x = Longitude[i], y = Latitude[i], size = 10),
data= CCRL, colour= 'purple', alpha = .5) +
theme(legend.position="none")
}
#Save the map
ggsave("map.png", width = 7, height = 4)
#Read the map
map <- image_read("D:/Rladies/IWD019/IWD2019/map.png")
#Indicate the place in the image where to place the map
place = 230
#Add the map to the template
template <- image_composite(template, image_scale(map, 'x200'), offset = paste("+620+", as.character(place)))
#Ad the rest of the info
#Indicate the place in the image where to place the data
place=190
#Add text and data
template <- image_annotate(template, paste("Chapter R-Ladies",CCRL$City[i],'in',CCRL$Country[i]), font = 'helvetica', size = 32, location = "+50+20") %>%
image_annotate( "Organized by:", font = 'helvetica', size = 22, location = "+50+65", color = "black") %>%
image_annotate("Contact information:", font = 'helvetica', size = 22, location = paste("+50+", as.character(place)), color = "black") %>%
image_annotate("Location:", font = 'helvetica', size = 22, location = paste("+640+", as.character(place)), color = "black")
#There are chapters with several organizers (Yay!) And the string with their names may be longer than the template. Therefore, the text must be cut to the appropriate length.
org <-str_wrap(CCRL$Organizers[i], width = 70)
#Add the organizers names with the appropriate length.
template <- image_annotate(template, org, font = 'helvetica', size = 25, location = "+50+90", color = "black")
#We add the info of each communication channel and social network only if the chapter has an active account.
#Maybe I should have made a function for this part .
#Cheking for Twitter
if (!is.na(CCRL$Twitter[i])){
place=place+40 #Add some lines
pic <- image_read("D:/Rladies/IWD019/IWD2019/twitter.png") #Read the corresponding logo
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place))) #Add the logo
template <- image_annotate(template, CCRL$Twitter[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple") #Add the URL or account
}
#Cheking for Meetup
if (!is.na(CCRL$Meetup[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/meetup.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Meetup[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for Mail
if (!is.na(CCRL$Email[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/mail.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Email[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for Facebook
if (!is.na(CCRL$Facebook[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/facebook.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Facebook[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for Instagram
if (!is.na(CCRL$Instagram[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/instagram.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Instagram[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for Periscope
if (!is.na(CCRL$Periscope[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/periscope.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Periscope[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for YouTube
if (!is.na(CCRL$Youtube[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/youtube.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Youtube[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for GitHub
if (!is.na(CCRL$GitHub[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/github.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$GitHub[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for WebSite
if (!is.na(CCRL$Website[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/web.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Website[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Cheking for Slack
if (!is.na(CCRL$Slack[i])){
place=place+40
pic <- image_read("D:/Rladies/IWD019/IWD2019/slack.png")
template <- image_composite(template, image_scale(pic, "x30"), offset = paste("+50+", as.character(place)))
template <- image_annotate(template, CCRL$Slack[i] , font = 'helvetica', size = 20, location = paste ("+95+", as.character(place)), color = "purple")
}
#Add Founders
if (!is.na(CCRL$Founders[i])){
place=place+40
template <- image_annotate(template, "Founded by:", font = 'helvetica', size = 22, location = paste ("+50+", as.character(place)), color = "black")
place=place+30
template <- image_annotate(template, CCRL$Founders[i], font = 'helvetica', size = 25, location = paste ("+50+", as.character(place)), color = "black")
}
#Save the final picture
image_write(template, paste("Chapter",str_replace_all(CCRL$City[i], fixed(" "), ""),".png"), format= "png")
}
Pour les chapitres en cours de création, nous n’avons pas d’informations de contact, donc nous remplaçons ces informations par des images sympathiques sur R-Ladies et son réseau. L’objectif était de produire cette image :
#Chapters without data
# We dont have contact information for this chapter, so we replace the info with a picture
#Pictures
pics <- c('meme', 'walk', 'group3','group4','future3')
set.seed(42)
# the first one is chosen, this way it's not "another" or "one more"
pics <- c(pics[1],
sample(pics, nrow(SinData) - 1, replace = TRUE))
for (i in 1:nrow(SinData)) { #Line for all the chapters
template <- image_read("D:/Rladies/IWD019/IWD2019/RLTemplate.png")
qr <- image_read("D:/Rladies/IWD019/IWD2019/qrcode_rladiesorg.png")
#Add the pic
place = 170
file <- paste("D:/Rladies/IWD019/IWD2019/",str_trim(as.character(pics[i])),".png")
pic <- image_read(str_replace_all(file," ",""))
template <- image_composite(template, image_scale(pic, 'x250'), offset = paste("+75+", as.character(place)))
#Add the chapter map
world <- ggplot() +
borders("world", colour = "gray85", fill = "gray80") +
theme_map()
if(!is.na(SinData$Lat[i])){
map <- world +
geom_point(aes(x = Longitude, y = Latitude, size = 1),
data = SinData, colour = 'black', alpha = .5) +
geom_point(aes(x = Longitude[i], y = Latitude[i], size = 10),
data= SinData, colour= 'purple', alpha = .5) +
geom_point(aes(x = Lon[i], y = Lat[i], size = 10),
data= SinDataL, colour= 'purple', alpha = .5) +
theme(legend.position="none")
} else {
map <- world +
geom_point(aes(x = Longitude, y = Latitude, size = 1),
data = SinData, colour = 'black', alpha = .5) +
geom_point(aes(x = Longitude[i], y = Latitude[i], size = 10),
data= SinData, colour= 'purple', alpha = .5) +
theme(legend.position="none")
}
ggsave("map.png", width = 7, height = 4)
map <- image_read("D:/Rladies/IWD019/IWD2019/map.png")
template <- image_composite(template, image_scale(map, 'x250'), offset = paste("+550+", as.character(place)))
#Add the rest of the info
place=190
template <- image_annotate(template, paste("Chapter R-Ladies",SinData$City[i],'in',SinData$Country[i]), font = 'helvetica', size = 32, location = "+50+20") %>%
image_annotate( "Organized by:", font = 'helvetica', size = 22, location = "+50+65", color = "black")
org <-str_wrap(SinData$Organizers[i], width = 70)
template <- image_annotate(template, org, font = 'helvetica', size = 25, location = "+50+90", color = "black")
#Add the QR
place=440
template <- image_annotate(template, "+Info:", font = 'helvetica', size = 22, location = paste("+50+", as.character(place)), color = "black")
place=place + 10
template <- image_composite(template, image_scale(qr, "x70"), offset = paste("+125+", as.character(place)))
#Save the final picture
image_write(template, paste("Chapter",str_replace_all(SinData$City[i], fixed(" "), ""),".png"), format= "png")
}
Comment les tweets ont été créés
#Base code from Ma?lle and the post in R-Ladies blog
# templates
templates <- c("Did you know that there is an adjective chapter in X? They'd love for you to visit!",
"Hop over and join this adjective group of #rladies in X!",
"Do you like #rstats? Looking for like-minded people? Come to have fun with us in X!",
"Do you like #rstats? Looking to learn more? Come to share with us in X!",
"Celebrate woman's day with our adjective chapter in X",
"Looking for something to inspire you? Meet our adjective chapter in X",
"Learn all about what this adjective chapter X is up to this Women's day!",
"We are so proud of our adjective chapter in X!",
"Nourish your mind today! Join adjective chapter X!",
"We are privileged to have adjective chapter X in our network!",
"We are privileged to feature adjective chapter X this women's day!")
Chapter_adjectives <- c("awesome", "fantastic", "wonderful", "amazing", "brilliant", "phenomenal", "remarkable", "talented", "incredible", "top-notch", "magnificent", "marvelous", "insightful", "capable", "admirable", "outstanding", "splendid", "exceptional")
# get as many sentences as there are Chapters
combinations <- expand.grid(templates, Chapter_adjectives)
combinations <- dplyr::mutate_all(combinations, as.character)
create_sentence <- function(template, adjective){
stringr::str_replace(template, "adjective", adjective)
}
sentences <- purrr::map2_chr(combinations$Var1, combinations$Var2,
create_sentence)
set.seed(42)
# the first one is chosen, this way it's not "another" or "one more"
sentences <- c(sentences[1],
sample(sentences, nrow(CCRL) - 1, replace = TRUE))
# add actual tweet text
CCRLTw <- dplyr::mutate(CCRL,
tweet = stringr::str_replace(sentences,"X",CCRL$City),
tweet = ifelse(!is.na(CCRL$Meetup),
paste0(tweet, " Meetups here: ", CCRL$Meetup), tweet),
tweet = paste(tweet, "#rladies #iwd2018"),
picture=paste("Chapter",str_replace_all(CCRL$City, fixed(" "), ""),".png"))
# save tweets
tweets <- dplyr::select(CCRLTw, City, tweet, picture) %>%
arrange(City)
#We used csv2 because we have some encode issues (windows and/or non english characters)
readr::write_excel_csv2(tweets, path = "ready_tweets.csv")
#Text for new chapters
templates <- c(
"We have plans for a chapter in X, are you close? Come closer!",
"In and around X? Interested in #rstats? We have just the thing for you!",
"Want to share with like minded R-ladies in X? Stay tuned for this new chapter!",
"R-ladies in X are gearing up for a new chapter...hop over to help them out!",
"Good news for X! An R-ladies chapter is starting right in your city!",
"#RLadies continues expanding and is reaching X!!, Stay tuned for this new chapter!")
# Get as many sentences as there are Chapters
set.seed(42)
# the first one is chosen, this way it's not "another" or "one more"
templates <- c(templates[1],
sample(templates, nrow(SinData) - 1, replace = TRUE))
# add actual tweet text
CCRLTw <- dplyr::mutate(SinData,
tweet = stringr::str_replace(templates,"X",SinData$City),
tweet = paste(tweet, "#rladies #iwd2018"),
picture=paste("Chapter",str_replace_all(SinData$City, fixed(" "), ""),".png"))
# save tweets
tweets <- dplyr::select(CCRLTw, City, tweet, picture) %>%
arrange(City)
readr::write_excel_csv2(tweets, path = "ready_tweets_nodata.csv")
Les auteurs : “Tel que raconté par Yanina Bellini, Patricia Loto et Divya Seernani ; avec des notes de Roxana Noelia Villafane et Gabriela De Queiroz”.
Ce message a été modifié pour la dernière fois le 22 avril 2025.