First off, there should be two blank lines between top-level functions/classes/code blocks. You've also styled the class Drawing_data. It should be appropriately renamed to DrawingData.
Secondly, the class Drawing_data is completely pointless. Is there any reason why self.data = self.read_data_lines() can't be part of the DataUtils class?
While I understand your logic behind naming your actual drawing functions C, L, R, and B, it'd be better if you gave them better names, like canvas, and line
You also shouldn't be using % for string formatting. If you're running Python 2.6 or higher, string formatting with % is deprecated, and str.format should be used instead. Here's an example of how to use str.format:
# str.format without positional or named arguments
print "{} {}".format("Hello", "world")
# str.format with positional arguments
print "{1} {0}".format("world", "Hello")
# str.format with named arguments
print "{word1} {word2}".format(word1="Hello", word2="world")
I'm also noticing a pattern with your inputted commands. The always form a structure somewhat like this: [name] [integer] .... While it works with a small example like this, if you have bigger commands, I'd recommend giving them actual command names, and doing something like this: canvas width:20 height:20. It makes things a lot clearer to read.
Finally, I'd recommend adding docstrings to your code. Right now, nothing in your code file has docstrings. Here's an example of docstrings in use:
"""
This docstring is at the top of the file,
it should describe the purpose of this file.
"""
class MyClass(object):
"""
Describe your class and it's arguments here.
"""
...
derdef my_func( ... ):
"""
Describe your function and it's arguments here.
"""
...