Making things with NodeBox 3

Today, setting aside better-things-to-do meant a morning making kaleidoscopes in NodeBox3. This is a tool I was recently introduced to by fellow classmates during an Advanced Topic presentation series, which I will post about in more detail soon. The series had us pairing up and exploring an assigned tool together, later presenting an introduction and demonstration to our peers. I was really excited after learning about NodeBox3 – it’s rather interesting in that the graphical interface does not require code, but requires understanding of programming functions and logic. Also, I like stuff that snaps together – who doesn’t?

How I came to be making cat kaleidoscopes was that I remembered a recent cat-themed call for image submissions from some fellow UW students working on a class assignment. In the interest of drawing attention to the extensive digital image collection hosted online by the University of Washington Libraries, these students are calling for people to find any image they like and fancify it using the free tool of their choice. So… on one hand I’ve got a burning desire to play with NodeBox3… on the other hand, here is a summons for a cat themed item-of-own-creation… so put them together and what do we have? Clapping, of course, but also a NodeBox3 generated cat kaleidoscope.

First, I located a cat image to use in the special collections. This one is from an illustrated children’s book featuring a cat for every letter of the alphabet! This one is a scholar. Appropriate, right?

 

Click to go to item page in UW Special Collections
From A cat alphabet and picture book for little folk (S, p. 22).

 

Next, I followed this excellent tutorial from the NodeBox3 blog: https://www.nodebox.net/blog/2013/01/kaleidoscope-tutorial/

After playing around in the comfort of using the image employed by the tutorial, I decided to strike out and use an image my own. Converting the jpeg I downloaded from UW Libraries was a bit of a chore. I am sure there is a way I could have done it with imagemagick, but I ultimately ended up using an online tool that I had to provide an email account to use – but if that is not what spam-bucket email accounts are for, then for what are they?

Here is my remixed cat kaleidoscope.

 

tailstailstailsI apologize to anyone bothered by the one tail that doesn’t go the same way as the other tails. Can we call it an executive design decision and leave it at that? Yes, you say? Why, thank you.

Week Four: Iterative Design

Up to this point, my adventures in data visualization class have taken me down a rutted path, with lots of signposts and not a whole lot of original thought required. I’ve plugged provided code into consoles and patted my self on the back when they’ve behaved predictably (completely unashamed about feeling winner-ly) and used Inkscape to match the examples of others rather than coming up with my own. It’s been comfortable and I’ve had lots of opportunities to feel good about my abilities but at this point – but now – I am not so confident! I came into this knowing where my weaknesses were but not sure how they would feel when bumped up against, as I learn to systematically visualize data.

The most difficult part for me (beyond the annoyance of trying to match colors under what I now notice to be the extremely poor lighting conditions in my work areas — seriously! I’ve auditioned every light emitting device in the house for my workspace and none seem to do the trick) has been developing the heuristics necessary in order for the process of creating data visualizations to feel more natural. This has a lot to do with design but more to do with understanding visual encodings of statistical information. While I’m starting to sort of intuit what might be potentially interesting relationships between variables in a data set, especially after translating the data into something more or less like a narrative in my own head, or conducting a brief “hair on the back of my neck test” in order to determine what might be interesting trends or patterns to look for in the data, my processes are unsophisticated and I’m limited in what I can stumble on almost accidental ways. So, I wouldn’t say that my heuristics in regards to manipulating data into visualizations are non-existent, I think they are developing, but I need to expand my imagination into some new and unfamiliar territory.

Oddly enough, the thought that what I am learning to do involves no less than figuring out how to map information in a meaningful way to a 2D space using graphical semiotics precisely representing data, provides me with some comfort in this challenge. I’m not just making it hard, it actually is difficult. It is actually a more impressive feat to convince someone that a short distance on a screen or sheet of paper represents a construct like a specific length of time than it is to convince them that the letters C-A-N-O-E represent a type of water-borne vessel (or a nice brewpub in Victoria, B.C. with tasty beers I remember all being served gassed with nitro). Are words more believable than statistical charts, and if so, for what reason? Are words more recognizably human, therefore more easy to relate to? Anyway, I forgive myself for having a difficult time with this, and am going to try to enjoy the challenge without being too tough on myself.

So iterative design in the creation of data visualizations… which I interpret to mean, “you really won’t know whether or not you have turned down the right road until you get all the way, or almost, to the end, at which point you may or may not have time to backtrack and decide on a different road to venture down.”  So it is. This suits me fine, in fact very well, as I am alright learning not just from, but by making mistakes.

Sketching on paper prior to doing any hard-core data visualizing is a great way to shorten trips down the wrong path, especially for folks like myself who are still fumbling with the means of sketching any other way. Here are some I created this week for a homework assignment.  Pardon the miserable scan:

KC_1 KC_2Data source for sketches: Sample dataset shipped with RStudio, “airPassengers”

Week Three: Refining with Inkscape

I have to say, I found working with R to be more fun than Inkscape. Despite handmaking Mother’s Day cards every year since I was a wee lass, my graphic design eye is not that sharp. One of my most startling (and later annoying) discoveries while working through these exercises was that my apartment is horribly lit – I dragged nearly every lamp in the house to my desk before finding one that could sufficiently light the examples in the book so they’d look something like what I what I could match the colors to on the screen.

After having trouble locating the correct fonts in Inkscape to match those used in the book, I’ve decided to dismount my Inkscape Open-Source high horse and embrace the use of Adobe Illustrator, at least for the last finishing touches. I have not received grades for the below yet, but know that there is a lot of room for improvement.

Figure 1

1

Figure 2

2

Figure 3

3

Figure 4

[Note to self: Track down and insert]

Figure 5

5

Figure 6

6

Document Generation with R in RStudio

This blogpost was created in RStudio using the rmarkdown package. For practice, I wanted to reproduce the plots created during week two and display them along with respective code.

Unfortunately, I only made it half-way, as only the code shows up, not the graphics. I was was hoping it would turn out something  sort of like so: http://rpubs.com/audiblediner/74483. Well, it’s a start.

 

Figure 1

hotdogs <-read.csv("http://datasets.flowingdata.com/hot-dog-contest-winners.csv", sep=",", header=TRUE)
fill_colors <- c()
for ( i in 1:length(hotdogs$New.record) ) {
if (hotdogs$New.record[i] == 1) {
fill_colors <- c(fill_colors, "#821122")
} else {
fill_colors <- c(fill_colors, "#cccccc")
}
}
barplot(hotdogs$Dogs.eaten, names.arg=hotdogs$Year, col=fill_colors, border=NA, space=0.3, xlab="Year", ylab="Hot dogs and buns (HDB) eaten", main="Nathan's Hot Dog Eating Contest Results, 1980-2010")

 

Figure 2

hot_dog_places <- read.csv('http://datasets.flowingdata.com/hot-dog-places.csv', sep=",", header=TRUE)
names(hot_dog_places) <- c("2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010")
hot_dog_matrix <- as.matrix(hot_dog_places)
barplot(hot_dog_matrix, border=NA, space=0.25, ylim=c(0, 200), xlab="Year", ylab="Hot dogs and buns (HDB) eaten", main="Hot Dog Eating Contest Results, 2000-2010")

 

Figure 3

subscribers <-
read.csv("http://datasets.flowingdata.com/flowingdata_subscribers.csv", sep=",", header=TRUE)
plot(subscribers$Subscribers, type="h", ylim=c(0, 30000), xlab="Day", ylab="Subscribers")
points(subscribers$Subscribers, pch=19, col="black")

 

Figure 4

population <-
read.csv("http://datasets.flowingdata.com/world-population.csv", sep=",", header=TRUE)
plot(population$Year, population$Population, type="l", bty="n", ylim=c(0, 7000000000), xlab="Year", ylab="Population")

 

Figure 5

postage <- read.csv("http://datasets.flowingdata.com/us-postage.csv", sep=",", header=TRUE)
plot(postage$Year, postage$Price, type="s", main="US Postage Rates for Letters, First Ounce, 1991-2010", xlab="Year", ylab="Postage Rate (Dollars)")

 

Figure 6

unemployment <- read.csv("http://datasets.flowingdata.com/unemployment-rate-1948-2010.csv", sep=",")
scatter.smooth(x=1:length(unemployment$Value), y=unemployment$Value, ylim=c(0,11), degree=2, col="#CCCCCC", span=0.5)

 


Data and Exercise Sources:  Yau, N. (2011). Visualize this: The FlowingData guide to design, visualization, and statistics. Indianapolis, Ind: Wiley Pub.

Playing with Plot.ly

I made the below using plotly, an online visualization and analytics tool. This is the first time making a visualization using plotly, so my goal was more to futz around  and figure out how it works than to really set myself up to do some analysis. Don’t judge too harshly! Maybe I’ll come back in a couple months so that my future data visualizing self can rip into my former self.

 

Week Two : Creating Visualizations using R and R-Studio

The below may not look like much, but for me creating them felt kind of magical.

Source for exercises: Yau, N. (2011). Chapter 4: Visualizing Patterns over Time. In Visualize this: The FlowingData guide to design, visualization, and statistics (pp. 92-133). Indianapolis, Ind.: Wiley Pub.

Figure 1

1

Figure 2

2

Figure 3

3

Figure 4

5

Figure 5

4

Figure 6

6

Next Week: Refining these with Inkscape