【问题标题】:Using a R function in python notebook to visualize missing data在 python notebook 中使用 R 函数来可视化丢失的数据
【发布时间】:2021-06-30 13:42:25
【问题描述】:

naniar 是用于可视化缺失数据的通用 R 包。我正在尝试使用rpy2naniar 中调用R 函数vis_miss() 来绘制丢失的数据。

Python 给了我一个数据框作为输出,而不是我笔记本中的一个绘图,我想解决这个问题。这个想法是在 python 笔记本中使用vis_miss 包。

以下是使用iris 数据集的工作示例:

# install rpy2 to run R in python
!pip3 install rpy2

%load_ext rpy2.ipython


from sklearn.datasets import load_iris

%R install.packages("naniar")
%R library(naniar)
%R library(ggplot2)


# Load Iris data
iris = load_iris()


# Run vis_miss function, expecting to see a graph showing missing data
%R naniar::vis_miss(iris)

我的输出现在应该是丢失数据的图像,但我得到了:

ListVector with 10 elements.
data    R/rpy2 DataFrame (750 x 4)
rows    variable    valueType   value
... ... ... ...
layers  ListVector with 1 elements.
[no name]   [RTYPES.ENVSXP]
scales  add: function clone: function find: function get_scales: function has_scale: function input: function n: function non_position_scales: function scales: list super:
... ...
plot_env    
labels  ListVector with 4 elements.
x   [RTYPES.STRSXP]
y   [RTYPES.STRSXP]
text    [RTYPES.STRSXP]
fill    [RTYPES.STRSXP]
guides  ListVector with 1 elements.
fill    [RTYPES.VECSXP]

如何在此 python 笔记本的单元格中获得在 R 中出现的所需输出?

我可以在这里使用matplotlibggplot2 吗?

【问题讨论】:

  • 这可能是由于 Jupyter notebook 的 Python 内核中 R 绘图的交互性(与 Python 脚本中的 rpy2 相同)。而不是实际的情节,你得到底层的 ggplot 数据转储。考虑将绘图保存到图像文件并在后续单元格中呈现。或者运行一个 R 内核。
  • 嗨@Parfait,在这种情况下如何保存为图像?

标签: python r matplotlib ggplot2 rpy2


【解决方案1】:

使用单元格魔法 (%%R) 将输出作为图像获取:

%%R
naniar::vis_miss(iris)

单元格魔法还允许自定义宽度/高度/dpi 和格式,请参阅:IPython magic integration

【讨论】:

  • 这太美了,我只是在汉斯·齐默 (Hans Zimmer) 在后台演奏时流下了眼泪 :D ... 严肃地说。感谢@krassowski 的帮助。
猜你喜欢
  • 2022-09-27
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多