You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by bz...@apache.org on 2016/08/26 01:19:35 UTC

zeppelin git commit: [ZEPPELIN-1327] Fix bug in z.show for Python interpreter

Repository: zeppelin
Updated Branches:
  refs/heads/master 42e3a141d -> 8064c5491


[ZEPPELIN-1327] Fix bug in z.show for Python interpreter

### What is this PR for?
Currently, height parameter for z.show implementation to display PNG images in Python interpreter is not working. This PR fix that bug.

### What type of PR is it?
Bug Fix

### What is the Jira issue?
[ZEPPELIN-1327](https://issues.apache.org/jira/browse/ZEPPELIN-1327)

### How should this be tested?
```python
import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [6,7,8,9,0]

plt.plot(x, y, marker="o")
z.show(plt, height="200px")
plt.close()
```

### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No

Author: Paul Bustios <pb...@gmail.com>

Closes #1352 from bustios/ZEPPELIN-1327 and squashes the following commits:

8eff11a [Paul Bustios] Change default values of width and height and add img tag for PNG images
b3c74a8 [Paul Bustios] Add comment explaining the need for decoding bytes to string
1a78a37 [Paul Bustios] Fix bug in z.show for Python interpreter


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/8064c549
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/8064c549
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/8064c549

Branch: refs/heads/master
Commit: 8064c54917f86ad08a15ba8c86341dce6dfac391
Parents: 42e3a14
Author: Paul Bustios <pb...@gmail.com>
Authored: Tue Aug 23 17:54:07 2016 -0300
Committer: Alexander Bezzubov <bz...@apache.org>
Committed: Fri Aug 26 10:19:30 2016 +0900

----------------------------------------------------------------------
 python/src/main/resources/bootstrap.py | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/8064c549/python/src/main/resources/bootstrap.py
----------------------------------------------------------------------
diff --git a/python/src/main/resources/bootstrap.py b/python/src/main/resources/bootstrap.py
index 16950fd..235f7ab 100644
--- a/python/src/main/resources/bootstrap.py
+++ b/python/src/main/resources/bootstrap.py
@@ -117,7 +117,6 @@ class PyZeppelinContext(object):
     
     def __init__(self):
         self.max_result = 1000
-        self.py3 = bool(sys.version_info >= (3,))
     
     def input(self, name, defaultValue=""):
         print(self.errorMsg)
@@ -165,28 +164,27 @@ class PyZeppelinContext(object):
         #)
         body_buf.close(); header_buf.close()
     
-    def show_matplotlib(self, p, width="100%", height="100%",
-                        fmt='png', **kwargs):
+    def show_matplotlib(self, p, fmt="png", width="auto", height="auto", 
+                        **kwargs):
         """Matplotlib show function
         """
-        if fmt == 'png':
+        if fmt == "png":
             img = BytesIO()
             p.savefig(img, format=fmt)
-            html = "%html <img src={img} width={width}, height={height}>"
             img_str = b"data:image/png;base64,"
             img_str += base64.b64encode(img.getvalue().strip())
-            # Need to do this for python3 compatibility
-            if self.py3:
-                img_str = img_str.decode('ascii')
-                
-        elif fmt == 'svg':
+            img_tag = "<img src={img} style='width={width};height:{height}'>"
+            # Decoding is necessary for Python 3 compability
+            img_str = img_str.decode("ascii")
+            img_str = img_tag.format(img=img_str, width=width, height=height)
+        elif fmt == "svg":
             img = StringIO()
             p.savefig(img, format=fmt)
-            html = "%html <div style='width:{width};height:{height}'>{img}<div>"
             img_str = img.getvalue()
         else:
             raise ValueError("fmt must be 'png' or 'svg'")
         
+        html = "%html <div style='width:{width};height:{height}'>{img}<div>"
         print(html.format(width=width, height=height, img=img_str))
         img.close()