【问题标题】:How to plot data from Excel using the R corrplot function?如何使用 R corrplot 函数从 Excel 中绘制数据?
【发布时间】:2018-08-01 12:38:31
【问题描述】:

我正在尝试学习 R,并使用 corrplot 库来绘制 Y:CityX: Population 图形。我写了以下代码:

当您查看上图时,有 2 列城市和人口。当我运行代码时,我收到以下错误消息:

Error in cor(Illere_Gore_Nufus) : 'x' must be numeric.

我的excel数据:

【问题讨论】:

  • 你能给我们一个你得到的Illere_Gore_Nufus数据框的例子吗?使用head(Illere_Gore_Nufus),您的 read_excel 似乎没有返回数值
  • 我不明白你在做什么。您想计算/可视化哪两个变量之间的相关性?我只能看到一个数字变量Population
  • 您的数据框有 2 列。要仅访问其中一列,您需要使用 $ 按名称访问列,例如 cor(Illere_gore_Nufus$Population)。有关使用 R 的一些指南,请参阅 cran.r-project.org
  • @Dave2e;您的解决方案正在创建一个错误:cor(Illere_Gore_Nufus$Population) 中的错误:同时提供“x”和“y”或类似矩阵的“x”
  • 我更新了我的问题

标签: r powerbi


【解决方案1】:

一般来说,只有当你有两个连续变量时,才能绘制相关图(散点图)。相关性是一个值,它告诉您两个连续变量如何线性相关。相关值将始终介于 -1 和 1 之间,其中 -1 的相关值描述了两个变量之间的弱线性关系,而相关值 1 描述了两个变量之间的强线性关系。相关值为0表示两个变量之间不存在线性关系,但两个变量之间可能存在曲线关系

例如 土地面积与土地价格 Here is the Data

此数据的相关值为 0.896,这意味着土地面积与土地价格之间存在很强的线性相关性(显然!)。

R 中的散点图如下所示 Scatter plot

R 代码是

area<-c(650,785,880,990,1100,1250,1350,1800,2200,2800)
price<-c(250,275,280,290,350,340,400,335,420,460)
cor(area,price)
plot(area,price)

在 Excel 中,对于相同的示例,您可以选择两列,转到插入 > 散点图(在图表部分下) Scatter plot

在您的情况下,可以将信息绘制在条形图中,y 轴为城市,x 轴为人口,反之亦然!

希望我已经回答了您的疑问!

【讨论】:

  • 如果您通过散点图表示散点图,则它与使用 R 中的 corrplot() 函数得到的相关图不同。这似乎是 OP 正在寻找的在这里。
【解决方案2】:

一些假设

您正在询问如何在 Excel 中执行此操作,但您的问题已标记为 R 和 Power BI(也是 RStudio,但已被编辑掉),因此我将向您展示如何使用 R 和 Power 执行此操作双。我还将向您展示为什么您会收到该错误消息,以及为什么您会收到一条错误消息,因为您的数据集不足以制作相关图。


我的回答

我假设您想绘制表格中城市之间人口的相关图。在该表中,您需要的信息不仅仅是每个城市一年的信息。我会检查您的数据源,看看您是否可以得出过去 10 年的人口数量。由于缺少您表中城市的确切数字,我将使用 10 个人口最多的国家/地区的人口的一些半编数字(根据您的数据结构):

Country         2017        2016        2015        2014        2013
China           1415045928  1412626453  1414944844  1411445597  1409517397
India           1354051854  1340371473  1339431384  1343418009  1339180127
United States   326766748   324472802   325279622   324521777   324459463
Indonesia       266794980   266244787   266591965   265394107   263991379
Brazil          210867954   210335253   209297939   209860881   209288278
Pakistan        200813818   199761249   200253292   197655630   197015955
Nigeria         195875237   192568158   195757661   191728478   190886311
Bangladesh      166368149   165630262   165936711   166124290   164669751
Russia          143964709   143658415   143146914   143341653   142989754
Mexcio          137590740   137486490   136768870   137177870   136590740

在 Power BI 中编写和调试 R 代码真的很痛苦,所以我建议安装 R studio,在那里编写你的小 R sn-ps,然后将其粘贴到 Power B 中。

您的错误消息的原因是函数cor() onlyt 将数字数据作为参数。在您的代码示例中,城市名称作为参数给出。您的代码示例中还有更多潜在的陷阱。您必须确保您的数据集是数字的。而且您必须确保您的数据集具有cor() 可以接受的形状。

下面是一个可以做到这一点的 R 脚本。复制以上数据,并将其存储在 C 盘上名为 data.xlsx 的文件中。

守则

library(corrplot)
library(readxl)

# Read data
setwd("C:/")
data <- read_excel("data.xlsx")

# Set Country names as row index
rownames(data) <- data$Country

# Remove Country from dataframe
data$Country <- NULL

# Transpose data into a readable format for cor()
data <- data.frame(t(data))

# Plot data
corrplot(cor(data))

剧情

Power BI

在 Power BI 中,您需要先导入数据,然后再将其用于 R 视觉对象:

复制这个:

Country,2017,2016,2015,2014,2013
China,1415045928,1412626453,1414944844,1411445597,1409517397
India,1354051854,1340371473,1339431384,1343418009,1339180127
United States,326766748,324472802,325279622,324521777,324459463
Indonesia,266794980,266244787,266591965,265394107,263991379
Brazil,210867954,210335253,209297939,209860881,209288278
Pakistan,200813818,199761249,200253292,197655630,197015955
Nigeria,195875237,192568158,195757661,191728478,190886311
Bangladesh,166368149,165630262,165936711,166124290,164669751
Russia,143964709,143658415,143146914,143341653,142989754
Mexcio,137590740,137486490,136768870,137177870,136590740

在您选择的文件夹中将其另存为 countries.csv,然后在 Power BI 中使用 获取数据 | Text/CSV,在对话框中点击Edit,在Power Query Editor中,点击Use First Row as headers 这样您的 Power Query 编辑器 中有此表:

单击关闭并应用 并确保您在VISUALIZATIONS | 下获得了可用的数据。字段

点击可视化下的 R:

选择 FIELDS | 下的所有列国家/地区,以便您获得此设置:

获取我们上面准备的 R sn-p 的部分

library(corrplot)

# Set Country names as row index
data <- dataset

rownames(data) <- data$Country

# Remove Country from dataframe
data$Country <- NULL

# Transpose data into a readable format for cor()
data <- data.frame(t(data))

# Plot data
corrplot(cor(data))

并将其粘贴到 Power BI R 脚本编辑器

点击运行R脚本

你会得到这个:

就是这样!

如果您将过程更改为从 Excel 文件而不是文本文件导入数据(使用 Get Data | Excel ,您就成功地结合了 Excel、Power BI 和 R 的强大功能来生成一个散点图!

我希望这就是你要找的东西!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多