用宽范围数据R绘制散点图

用宽范围数据R绘制散点图,r,plot,scatter-plot,R,Plot,Scatter Plot,我上传了一个csv文件到R工作室,并试图绘制两列。第一个显示喜欢的数量,第二个显示股票的数量。我想展示当人们真的喜欢一篇文章时,股票数量之间的关系 问题是我的喜好数从100万开始到100万,股票数从5开始到37000 我的数据集示例(两列都属于类因子) 当我使用这段代码绘制散点图时。看起来很乱 plot(as.numeric(topMedia$shares\u count)、as.numeric(topMedia$likes\u count)) 我试着使用其他图书馆 library(hexbi

我上传了一个csv文件到R工作室,并试图绘制两列。第一个显示喜欢的数量,第二个显示股票的数量。我想展示当人们真的喜欢一篇文章时,股票数量之间的关系

问题是我的喜好数从100万开始到100万,股票数从5开始到37000

我的数据集示例(两列都属于类
因子

当我使用这段代码绘制散点图时。看起来很乱

plot(as.numeric(topMedia$shares\u count)、as.numeric(topMedia$likes\u count))

我试着使用其他图书馆

library(hexbin)

cols = colorRampPalette(c("#fee6ce", "#fd8d3c", "#e6550d", "#a63603"))
plot(hexbin(as.numeric(topMedia$shares_count), as.numeric(topMedia$likes_count), xbins = 40), colorcut = seq(0,1,length=20),
     colramp = function(n) cols(20), legend = FALSE,xlab = 'share count', ylab = 'like count')
但即使是颜色,我也能得到类似的结果

有什么更好的方式来展示这些价值观之间的关系?
谢谢。

在这种情况下,均匀分布(因为“喜欢”和“分享”之间应该有明显的正相关性)是数字数据可能被无意中加载为一个因子的线索。另一个线索是,x和y值只随唯一值的数量而变化,而不随基础数字数据的范围而变化我们需要转换因子的级别(而不是因子的值)以查看预期的数字。我们可以使用类似于
as.numeric(as.character(x))
的方法来实现这一点


举个例子,假设我们有一些线性相关的数据,如下所示:

library(ggplot2); library(dplyr)
set.seed(42)
fake_data <- data.frame(x = runif(10000, 0, 1000000))
fake_data$y <- pmax(0, fake_data$x*rnorm(10000, 1, 2) + runif(10000, 0, 1000000))
ggplot(fake_data, aes(x,y)) + geom_point()
x和y值现在具有与其字母顺序相关的值,不同于其基础级别。R使用这些值进行排序或绘图,新数据中具有最低值的x值的级别接近100000,而不是接近0。在下表中,第1行的100124按字母顺序比第8行的10058早

fake_data_factor %>%
  arrange(x) %>%
  head(8)
#                 x                y
#1 100124.688120559                0
#2 100229.354342446 289241.187250382
#3 100299.560697749 232233.101769741
#4 100354.233058169 814492.563551191
#5 100364.253856242 1183870.56252858
#6   100370.0227011 1224652.83777805
#7 100461.616180837 1507465.73704898
#8 10058.1261795014 604477.823016668

ggplot(fake_data_factor, aes(as.numeric(x),as.numeric(y))) +
  geom_point()

通过将因子转换为字符(提取每个元素的级别),然后将它们转换为数字,我们可以返回到预期的数字

fake_data_factor %>%
  ggplot(aes(as.numeric(as.character(x)),as.numeric(as.character(y)))) +
  geom_point()

底面R中的热图
ggplot2
中的
geom_bin2d
可能在这里有用。请参见此处了解更多策略:或者问题似乎在于大量数据点。尝试使用
smoothScatter
hexbin
。这里有几个例子:我怀疑这里有因子数据,使用as.numeric进行的转换是转换因子的值,而不是级别。这也许可以解释你所看到的近似均匀分布,而我本以为这两个指标之间有很强的线性相关性。尝试将
as.numeric(topMedia$shares\u count)
替换为
as.numeric(as.character(topMedia$shares\u count))
和其他度量值相同。@添加as.character后,效果会更好!但它改变了轴上的数字。知道为什么吗?谢谢你的帮助。@cddt我已经用我的hexbin更新了我的帖子。这并没有改变情节。谢谢你的帮助。我的情节现在看起来好多了。
fake_data_factor %>%
  arrange(x) %>%
  head(8)
#                 x                y
#1 100124.688120559                0
#2 100229.354342446 289241.187250382
#3 100299.560697749 232233.101769741
#4 100354.233058169 814492.563551191
#5 100364.253856242 1183870.56252858
#6   100370.0227011 1224652.83777805
#7 100461.616180837 1507465.73704898
#8 10058.1261795014 604477.823016668

ggplot(fake_data_factor, aes(as.numeric(x),as.numeric(y))) +
  geom_point()
fake_data_factor %>%
  ggplot(aes(as.numeric(as.character(x)),as.numeric(as.character(y)))) +
  geom_point()