Color Ramp Generator - iOS/Android App

Phase 1 (done)

Figma Logo Swift Logo

Color Ramp Generator

For iOS

The first basic version of this app is available at the appstore here. Please stay tuned for updates towards the final design.

iOS Mockups Mockups

iOS Conference Singapore 2023

I had the great pleasure of being invited to speak about this design in the Singapore iOS conference

iOS Conference Singapore iOS Conference Singapore iOS Conference Singapore iOS Conference Singapore

Who is this for?

The data analyst, mathematician, scientist or developer who is working with data visualizations or data stories. They are motivated by their love of working with numbers and logic, and have a mission to convert data insights into value.

iOS Conference Singapore iOS Conference Singapore

Their typical day is spent meeting with clients, cleaning/preparing data and eventually training and testing models. One challenge they face is making their visualizations compelling, understandable and accessible.

History

Scientists, engineers and developers who uses R, Python or D3 are familiar with the well known colormaps that were created by Nathaniel Smith and Stefan van der Walt. These colormaps greatly improve the user experience of interpreting simple or complex data visualizations and can be seen in many discrete charts or heat-maps such as the one below.

Viridis and Magma color maps in R

Colormap generators exist so what new features do I want to bring?

Outside of R and Python, there are already a few online websites where one can generate the hex codes for a given number of color points across the colormap. I really wanted to to bring this capability into a new User Interface for a mobile app that can be used offline and have some additional capabilities. These would include letting the user customize individual colors, perform accessibility tests as well as copy and share their palettes.

The job to be done - Make it easier to customize and apply to visuals outside of R, Python and D3.

We can make reporting visuals more engaging and less overwhelming when using harmonious color ramps. Scientists and Engineers may already know, or want to discover, that creating harmonious and compelling visualizations will attract a wider audience and keep them more engaged. In academic conferences, what I remember most is 1) A compelling speaker and 2) A chart or visual that tells a striking story.

An offline app for iOS and Android would make these ramps more accessible.

iOS and Android Mockup

Android Design

Both the iOS and Android design use native components that clearly differentiate themselves from one another. Staying true to the identiy of the operating system is important for the user experience because it provides familiarity, consistency and a sense of pride for loyal users.

Android Mockups

Android Flow

The Android design has the same information architecture and user flow as for iOS.

Android prototype

Enhancing Data Visualizations

These color ramps greatly improve the users flow through complex data visualizations. In addition to being beautiful and better for data interpretation, these colormaps have also been tested on the most common conditions of colorblindness.

From Idea to Action

Swift Feasibility Test

One evening, I downloaded the colormap data and tested some basic logic in SwiftUI to confirm that it was possible to work with the colormap data on the Swift platform.

A Proposal

I then took the opportunity to jump into Figjam and think the idea through. I had a few core functionalities in mind that would help an everyday user easily access and make use of the ramps.

Proposal

User Flow

For this app, users would have access to data points on the colormaps and be able to

User Flow Diagram

Grey Boxing

I really love designing (and building) for Native, so much that even when grey-boxing I could not seem to shut up.

iOS versus Android

Here I point out all of the differences between the iOS and Android user interfaces. It is not required, but I went an extra mile of learning Swift and Kotlin thoroughly and I also carry an iPhone and Samsung Phone. Not every UI designer needs to do this. For me, it gave me an even deeper understanding of the operating system for which I am designing for.

Low Fidelity Screens - iOS versus Android

App Store Inspiration

The best design ideas come from analyzing real apps directly on your phone. Another reason I carry an iPhone and Android phone is so that I can download the same apps with each and do a comparison. Sometimes apps will look almost identical on iOS and Android, depending on how the app was designed as well as the UI technology used.

Exploring apps on the app store

Updated Screen Designs

Seeing the user interfaces implemented in real apps was the biggest inspiration throughout the entire design process. While Dribble is great for expanding the mind, the app stores shed light on what final design decisions were made, and what really works for users.

New screen designs based on apps from the app store

Sounds and Haptic Feedback

The color selection process can be made more immersive and fun with sounds and haptic feedback. This also brings up the fascinating topic of Chromesthesia, or 'color hearing', where musical tone causes a person to see color. One user reported seeing lighter colors for high notes and darker colors for low notes.

Illustration of color generator sound experience

Gestures

Can the user hold this app in one hand while using a BI tool in the other hand? Here we do an analysis on the types of gestures used and confirm that they can be performed with one hand, either the left or the right hand.

Navigational Gestures (1 tap)

Action Gestures (1 tap)

Transform Gestures

Custom color picker gestures

Final Screens (iOS and Android)

Customizations

Depending on how the colors are used, the user may want to adjust the saturation in order to suit specific accessibility needs. This is extremly important when displaying text.

Adjusting saturation and brightness

Contrast Test

While selecting colors, the user can actively test the color contrast performance right in the same app and make the necessary adjustments in order to satisfy color accessibility requirements. For a given color pair, the color contrast performance is different depending on which color is in the foreground versus background.

iOS Screens

Pros and Cons of designing for Native iOS in Figma

iOS Screens

Android Screens

Pros and Cons of designing for Android in Figma

Android Screens

Figma Party

iOS Night

This was all done using a trackpad. Just kidding :D

I am yet to use a promising new tool called 'Play' that enables designing iOS apps with native components directly on a mobile device.

iOS prototype

Mobile app development becoming easier

Native Apps provide the best user experience, especially when accessing hardware and harnessing features such as AR. Native development is known to be expensive but the modern declarative frameworks such as SwiftUI for iOS and Jetpack Compose for Android make it building beautiful high quality user interfaces and apps more efficient.

In addition, KMP seems like a promising architecture where the SwiftUI or Jetpack Compose UI views can be driven by the same backend and logic. Just a note, this is a very simplified explanation of KMP. I am not a KMP expert so I won't go further into this :D

Uniform Color Ramp

Right from our pocket we can select the desired color map and number of colors to generate. The concept is slightly similar to what can be seen on the web but enhanced and designed for a mobile interface.

iOS and Android - Custom Color Palette Screen

Custom Color Ramp Points

The color point selection functionality is extended to being able to customize the points. For example, if due to accessibility issue the user may want to exclude yellow.

iOS and Android - Uniform Color Palette Screen

Save Colors

The most practical feature to stand out is the ability to save and copy entire palettes or individual colors. Currently, when users generate a palette for example with R, they need to copy down the hex codes themselves or regenerate the palette again.

Adjusting saturation and brightness Adjusting saturation and brightness iOS and Android - Saved Colors

Contrast Test

Testing the contrast between iterations would no longer require copying hex codes into a separate website. Ease of testing encourages more testing. Overall this makes the life of a data or infographic visual designer easier.

iOS and Android - Contrast Test

Data Chart Test

An advanced preview of how the colors would appear in popular charts ranging from bar charts to heatmaps. When it comes to being able to discriminate between colors, heatmap visualizations have very different requirements as compared to discrete bar charts.

iOS and Android - Chart Test

Colorblind Test

We can test the colorblind performance, without having to go to another website or app. There are two main types of colorblindness known; red-green and blue-yellow, and these can each be broken down further. This is to be covered in more detail in the information section of the app.

iOS and Android - Colorblind Test

Acknowledgements

Within the app itself, I would like to acknowledge the colormap creators, Nathaniel Smith and Stefan van der Walt, who have kindly allowed 3rd parties access to use this color data.

iOS and Android - About Screen

Save discrete color sets for later

Not to be repetitive, but to emphasize again, that palette saving is one of the most important features which does not currently exist with these color maps. Each configuration can be shared and/or saved for later use. One does not have to do screen captures, note down, or regenerate / redesign the same color palettes again.

Saved color palettes

I cannot wait to start building this in SwiftUI

What I learned

What I believe