{"id":13809856,"url":"https://github.com/shandiya/feathers","last_synced_at":"2025-05-14T10:31:13.775Z","repository":{"id":37637651,"uuid":"327513919","full_name":"shandiya/feathers","owner":"shandiya","description":"Colour palettes for data visualisation, inspired by the plumage of Australian birds","archived":false,"fork":false,"pushed_at":"2025-02-11T07:21:28.000Z","size":16806,"stargazers_count":69,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T08:22:36.933Z","etag":null,"topics":["colour-palette","data-visualisation","julia-language","plot","r"],"latest_commit_sha":null,"homepage":"","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shandiya.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-07T05:37:18.000Z","updated_at":"2025-02-11T07:43:11.000Z","dependencies_parsed_at":"2024-08-04T02:02:15.997Z","dependency_job_id":"ceec8be7-560a-41cd-ac67-d8d8792885aa","html_url":"https://github.com/shandiya/feathers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shandiya%2Ffeathers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shandiya%2Ffeathers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shandiya%2Ffeathers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shandiya%2Ffeathers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shandiya","download_url":"https://codeload.github.com/shandiya/feathers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254120624,"owners_count":22018024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["colour-palette","data-visualisation","julia-language","plot","r"],"created_at":"2024-08-04T02:00:37.705Z","updated_at":"2025-05-14T10:31:13.743Z","avatar_url":"https://github.com/shandiya.png","language":"R","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"---\ntitle: feathers\noutput: github_document\n---\n\n\u003c!-- badges: start --\u003e\n\n![](https://img.shields.io/badge/colours-feathers-D5114E.svg)\n\n\u003c!-- badges: end --\u003e\n\n```{r, include=FALSE}\nlibrary(feathers)\nlibrary(dplyr)\n```\n\nThis package contains colour palettes inspired by the plumage of Australian birds. For species exhibiting sexual dimorphism (i.e. males and females look different), I have used female colours. Research on birds has historically been biased towards males, and the choice to use female colours in this package is my way of highlighting the often-overlooked beauty of female birds.\n\n## Installation\n\nThis package is hosted on GitHub and can be installed using the devtools package:\n\n```{r, message=FALSE, warning=FALSE, echo = TRUE, results='hide'}\ndevtools::install_github(repo = \"shandiya/feathers\", ref = \"main\")\n```\n\n## How to use `feathers`\n\nColour palettes are stored as a list called `feathers_palettes`, and can be accessed thus:\n\n```{r}\nlibrary(feathers)\nnames(feathers_palettes)\n```\n\n`get_pal` returns the chosen palette as a vector of hex colour codes.\n\n```{r}\nget_pal(\"eastern_rosella\")\n```\n\n`print_pal` displays the colour palette.\n\n```{r, fig.height=1, fig.width=7, fig.align='center'}\neastern_rosella \u003c- get_pal(\"eastern_rosella\")\nprint_pal(eastern_rosella)\n```\n\n## Examples\n\nColour palettes can be used for data visualisation in base `R` and `ggplot2`.\n\n```{r message=FALSE, warning=FALSE, out.width=c('50%', '50%'), fig.show='hold'}\n\n# base R\nlibrary(palmerpenguins)\nplot(penguins$flipper_length_mm, penguins$body_mass_g, col = get_pal(\"rose_crowned_fruit_dove\")[factor(penguins$species)], pch = 19)\n\n# ggplot2\nlibrary(ggplot2)\nlibrary(palmerpenguins)\nggplot(penguins) +\n  geom_point(aes(flipper_length_mm, body_mass_g, colour = species)) +\n  scale_colour_manual(values = get_pal(\"rose_crowned_fruit_dove\"))\n\n```\n\n## Colour palettes\n\nThe images below show each palette and the bird that inspired it.\n\n### Eastern Rosella (*Platycercus eximius*)\n\n```{r rosella_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=7, fig.align='center'}\ner \u003c- get_pal(\"eastern_rosella\")\nprint_pal(er)\n```\n\n```{r rosella_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/eastern_rosella_plot.png\")\nknitr::include_graphics(\"images/eastern_rosella_img.png\")\n```\n\nImage: [Duncan McCaskill](https://commons.wikimedia.org/wiki/File:Platycercus_eximius_-Canberra,_Australia-8.jpg)\n\n### Plains-wanderer (*Pedionomus torquatus*)\n\n```{r wanderer_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=7, fig.align='center'}\npw \u003c- get_pal(\"plains_wanderer\")\nprint_pal(pw)\n```\n\n```{r wanderer_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/plains_wanderer_plot.png\")\nknitr::include_graphics(\"images/plains_wanderer_img.png\")\n```\n\nImage: [JJ Harrison](https://en.wikipedia.org/wiki/Plains-wanderer#/media/File:Plains-wanderer_female_8173.jpg)\n\n### Spotted Pardalote (*Pardalotus punctatus*)\n\n```{r spotty_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=6, fig.align='center'}\nsp \u003c- get_pal(\"spotted_pardalote\")\nprint_pal(sp)\n```\n\n```{r spotty_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/spotted_pardalote_plot.png\")\nknitr::include_graphics(\"images/spotted_pardalote_img.png\")\n```\n\nImage: [Patrick_K59](https://commons.wikimedia.org/wiki/File:Spotted_Pardalote_(Pardalotus_punctatus)_female_(23113043855).jpg)\n\n### Rose-crowned Fruit-Dove (*Ptilinopus regina*)\n\n```{r rcf_dove_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=8, fig.align='center'}\nrcfd \u003c- get_pal(\"rose_crowned_fruit_dove\")\nprint_pal(rcfd)\n```\n\n```{r rcf_dove_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/rose_crowned_fruit_dove_plot.png\")\nknitr::include_graphics(\"images/rose_crowned_fruit_dove_img.png\")\n```\n\nImage: [Sheba_Also](https://commons.wikimedia.org/wiki/File:Rose_crowned_Fruit_Dove_at_Australia_Zoo-1_(9098717408).jpg)\n\n### Rainbow Bee-eater (*Merops ornatus*)\n\n```{r bee_eater_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=7, fig.align='center'}\nbe \u003c- get_pal(\"bee_eater\")\nprint_pal(be)\n```\n\n```{r bee_eater_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/bee_eater_plot.png\")\nknitr::include_graphics(\"images/bee_eater_img.png\")\n```\n\nImage: [Jim Bendon](https://commons.wikimedia.org/wiki/File:Rainbow_bee_eater_m%26f.jpg)  \n\n### Superb Fairy-wren (*Malurus cyaneus*)\n\n```{r superb_fw_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=5, fig.align='center'}\nsfw \u003c- get_pal(\"superb_fairy_wren\")\nprint_pal(sfw)\n```\n\n```{r superb_fw_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/superb_fairy_wren_plot.png\")\nknitr::include_graphics(\"images/superb_fairy_wren_img.png\")\n```\n\nImage: [Patrick_K59](https://commons.wikimedia.org/wiki/File:Superb_Fairy-wren_(Malurus_cyaneus)_(18115879009).jpg)\n\n### Princess Parrot (*Polytelis alexandrae*)\n\n```{r princess_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=8, fig.align='center'}\npp \u003c- get_pal(\"princess_parrot\")\nprint_pal(pp)\n```\n\n```{r princess_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/princess_parrot_plot.png\")\n```\n\n### Olive-backed Oriole (*Oriolus sagittatus*)\n\n```{r oriole_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=10, fig.align='center'}\noriole \u003c- get_pal(\"oriole\")\nprint_pal(oriole)\n```\n\n```{r oriole_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/oriole_plot.png\")\nknitr::include_graphics(\"images/oriole_img.png\")\n```\n\nImage: [Patrick_K59](https://commons.wikimedia.org/wiki/File:Olive-backed_Oriole_(Oriolus_sagittatus)_(16640844194).jpg)\n\n### Southern Cassowary (*Casuarius casuarius*)\n\n```{r cassowary_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=8, fig.align='center'}\ncass \u003c- get_pal(\"cassowary\")\nprint_pal(cass)\n```\n\n```{r cassowary_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/cassowary_plot.png\")\nknitr::include_graphics(\"images/cassowary_img.png\")\n```\n\nImage: [Nick Hobgood](https://commons.wikimedia.org/wiki/File:Casuarius_casuarius_Southern_Cassowary_Papua_New_Guinea_by_Nick_Hobgood.jpg)\n\n### Eastern Yellow Robin (*Eopsaltria australis*)\n\n```{r yellow_robin_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=8, fig.align='center'}\nrobin \u003c- get_pal(\"yellow_robin\")\nprint_pal(robin)\n```\n\n```{r yellow_robin_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/yellow_robin_plot.png\")\nknitr::include_graphics(\"images/yellow_robin_img.png\")\n```\n\nImage: [Patrick_K59](https://commons.wikimedia.org/wiki/File:Eastern_Yellow_Robin_(Eopsaltria_australis)_(42280188404).jpg)\n\n### Galah (*Eolophus roseicapilla*)\n\n```{r galah_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=7, fig.align='center'}\ngal \u003c- get_pal(\"galah\")\nprint_pal(gal)\n```\n\n```{r galah_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/galah_plot.png\")\nknitr::include_graphics(\"images/galah_img.png\")\n```\n\nImage: [Calistemon](https://commons.wikimedia.org/wiki/File:Galah_(Eolophus_roseicapilla)_at_Coalseam_Conservation_Park,_August_2022_16.jpg)\n\n### Blue-winged Kookaburra (*Dacelo leachii*)\n\n```{r kookaburra_pal, echo = FALSE, message=FALSE, warning=FALSE, fig.height=1, fig.width=7, fig.align='center'}\nbwk \u003c- get_pal(\"blue_winged_kookaburra\")\nprint_pal(bwk)\n```\n\n```{r kookaburra_img, echo = FALSE, message=FALSE, warning=FALSE, fig.show=\"hold\", out.width=c('65%', '35%')}\nknitr::include_graphics(\"images/blue_winged_kookaburra_plot.png\")\nknitr::include_graphics(\"images/blue_winged_kookaburra_img.png\")\n```\nImage: [John](https://www.flickr.com/photos/shebalso/11337227556/in/photolist-2mWFnMb-igQfLC-2aSw5uf-2jxyurH-q9r9LK-VSnLoi-2mcjA2N-5KRRVT-2oCTQJh-2mjJ685-DU4FfS-2ofmTCz-2hi8qRh-2hghLqs-23gz7rr-yon4md-2bofh1K-kXBzxo-A34jVg-28fcawR-2hrwP4R-2juUSdh-YkAhR6-2jqMbhn-y9yM9T-iiJDCt-2qgJVXi-2mo3wn9-2gbbMcF-2q8d7hu-277w86E-q6DfTb-2jvGzte-2euVCEo-io3es5-2grAQNb-q6mtLN-2nKKNP9-2oEzST2-hq9DEN-qprXxi-2jA8yQM-6fESCG-dxQfzW-2hsTGor-2jgzQvW-25cVNG2-2nDAUjr-io362g-2gdqPYu/)\n\n## Continuous palettes\n\nThe qualitative colour palettes in `feathers` may be converted into sequential or diverging palettes for different types of data visualisation using the `colorRampPalette()` function.\n\n### Sequential palette\n\n```{r, results = FALSE}\n# choose end colours\nseq_col \u003c- get_pal(\"eastern_rosella\")[c(2,7)]  \n\n# create a gradient of 50 shades in between the selected colours \ncolorRampPalette(seq_col)(50)\n```\n\n```{r, echo = FALSE, fig.height=2, fig.width=10, fig.align='center'}\nprint_pal(colorRampPalette(seq_col)(50))\n```\n\n### Diverging palette\n\n```{r, results = FALSE}\n# choose end and middle colours\ndiv_col \u003c- get_pal(\"oriole\")[c(1,5,10)]\n\n# create a gradient of 50 shades in between the selected colours \ncolorRampPalette(div_col)(50)\n```\n\n```{r, echo = FALSE, fig.height=2, fig.width=10, fig.align='center'}\nprint_pal(colorRampPalette(div_col)(50))\n```\n\n## Accessibility\n\nThere are many tools and packages which simulate different types of colour vision deficiency, such as [Viz Palette](https://projects.susielu.com/viz-palette), [colorblindcheck](https://jakubnowosad.com/colorblindcheck/index.html), [prismatic](https://emilhvitfeldt.github.io/prismatic/), and [colorblindr](https://github.com/clauswilke/colorblindr). You may find these helpful in guiding your decisions about which colours to include in your visualisation to make it accessible to as many people as possible. Happy plotting!\n\n## Julia Port\n\nThese colour palettes are now available in Julia as part of the default colour schemes ([ColorSchemes.jl](https://github.com/JuliaGraphics/ColorSchemes.jl/)). Use these colour palettes as you would any other built-in Julia colour scheme:  \n\n```\nusing ColorSchemes\ncolorscheme[:cassowary] # or your bird of choice\n```\n\n## Contribute\n\nIf you would like to contribute to this package or have suggestions for improvement, please [contact me on Bluesky](https://bsky.app/profile/shandiya.bsky.social) or submit a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshandiya%2Ffeathers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshandiya%2Ffeathers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshandiya%2Ffeathers/lists"}