Drawing with Unicode block characters

My previous post contained the image below.

The point of the post was that the numbers that came up in yet another post made the fractal image above when you wrote them in binary.

Here’s the trick I used to make that image.

To make the pattern of 0’s and 1’s easier to see, I wanted to make a graphic with black and white squares instead of the characters 0 and 1.

I thought about writing a program to create an image using strings of 0’s and 1’s as input, but then I thought of something more direct.

The Unicode character U+2588 is just a solid rectangle.

I replaced the 1’s with U+2588 and replaced the 0’s with spaces.

So I made a text file that looked like the the image above, and took a screen shot of it.

The only problem was that the image was rectangular.

I thought the pattern would be easier to see if it were a square, so I changed the aspect ratio on the image.

Here’s another example using Unicode block elements, this time to make a little bar graph, sorta like Edward Tufte’s idea of a sparkline.

The characters U+2581 through U+2588 produce bars of increasing height.

Here’s the Python code that produced the above graph of English letter frequencies.

# Letter frequencies via # http://www.

norvig.

com/mayzner.

html freq = [ 8.

04, 1.

48, 3.

34, 3.

82, 12.

49, 2.

40, 1.

87, 5.

05, 7.

57, 0.

16, 0.

54, 4.

07, 2.

51, 7.

23, 7.

64, 2.

14, 0.

12, 6.

28, 6.

51, 9.

28, 2.

73, 1.

05, 1.

68, 0.

23, 1.

66, 0.

09, ] m = max(freq) for i in range(26): u = int(8*freq[i]/m) ch = chr(0x2580+u) if u > 0 else ” ” print(ch, end=””) print() for i in range(26): print(chr(0x41+i), end=””).. More details

Leave a Reply