将Matplotlib输出保存到Databricks上的DBFS

时间:2019-07-25 14:00:00

标签: matplotlib databricks

我正在Databricks上编写Python代码来处理一些数据和输出图。我希望能够将这些图形另存为图片文件(.png或其他格式,并不重要)到DBFS。

代码:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'fruits':['apple','banana'], 'count': [1,2]})
plt.close()
df.set_index('fruits',inplace = True)
df.plot.bar()
# plt.show()

我尝试过的事情

plt.savefig("/FileStore/my-file.png")
  

[Errno 2]没有这样的文件或目录:'/FileStore/my-file.png'

fig = plt.gcf()
dbutils.fs.put("/dbfs/FileStore/my-file.png", fig)
  

TypeError:类型错误-预期为(,)。

经过研究,我认为fs.put仅在您要保存文本文件时有效。

使用plt.show()运行以上代码将为您提供条形图-我希望能够将条形图作为图像保存到DBFS。感谢您的任何帮助,谢谢!!

2 个答案:

答案 0 :(得分:2)

更简单的方法,只需使用matplotlib.pyplot。修复dbfs路径:

示例

.findall(el, namespaces)

答案 1 :(得分:1)

您可以通过将图形保存到内存中,然后使用Python local file APIs写入DataBricks文件系统(DBFS)来实现。

示例:

import matplotlib.pyplot as plt
from io import BytesIO

# Create a plt or fig, then:
buf = BytesIO()
plt.savefig(buf, format='png')

path = '/dbfs/databricks/path/to/file.png'

# Make sure to open the file in bytes mode
with open(path, 'wb') as f:
  # You can also use Bytes.IO.seek(0) then BytesIO.read()
  f.write(buf.getvalue())