有像crazyegg.com这样的服务可以向您显示访问者在您的网页上放置鼠标光标的位置.我的问题是,鉴于人们有不同的屏幕宽度,他们怎么能确定我的x坐标与另一个人x坐标在页面上的位置相同?意思是,两个人可能有相同的鼠标x坐标,但由于屏幕的宽度不同,他们的鼠标将位于网页的不同部分.
如何创建一个考虑到这一点的网页热图服务,并且可以在不同内容大小的多个不同网站上进行缩放和使用?
我想在我的Rails应用程序之外使用我自己的数据在Google地图上实现热图.为此,我需要根据我的数据为每个地图坐标(平铺)生成叠加图像.
我发现如何使用ImageMagick生成它,但我不想依赖于此,因为我计划在几个地方分发我的应用程序,所以我想只使用Ruby语言.
请注意,我只需要在一个小的透明方块上绘制不同颜色的点.
我正在尝试使用该heatmap.2
包创建热图.我的数据中有很多NaN
值,我想做的是以下内容.每次有NaN
值时,只需将单元格颜色设置为浅灰色(或其他一些中性颜色,可能是白色),然后将所有其他值(即log2表达式)设置为标准绿色/黄色/红色着色方案.这是我使用的代码:
heatmap.2(as.matrix(foo2[rowSums (abs(foo2)) != 0,]),
col = redgreen,
margins = c(12, 22),
trace = "none",
xlab = "Comparison",
lhei = c(2, 8),
scale = c("none"),
symbreaks = min(foo2 = 0, na.rm = TRUE),
na.color = "blue",
cexRow = 0.5,
cexCol = .7,
main = "DE geness",
Colv = F)
Run Code Online (Sandbox Code Playgroud)
当没有NaN
值时NaN
,这很有效,但是当数据有时,我收到的错误是:
Error in hclustfun(distfun(x)) :
NA/NaN/Inf in foreign function call (arg 11)
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我想让它忽略NaN
数据中的's'.我不知道如何处理这个问题.任何帮助将不胜感激.
我有以下示例数据:
sel = structure(c(1.29955, 2.52295, 1.11021, 2.52008, 8.20255, 8.50118,
5.82189, 5.8108, 1.55928, 8.2552, 5.25119, 5.55055, 1.22525,
3.152, 3.9299, 5.50921, 5.25591, 5.11218, 1.55951, 2.5525,
9.2358, 2.0928, 5.2538, 2.5539, 8.52592, 2.59521, 5.55858,
5.92955, 2.22089, 1.52105),
.Dim = c(10L, 3L), .Dimnames = list(c("a", "b",
"c", "d", "e", "f", "g", "h",
"i", "j"), c("Label.1", "Label.2", "Label.3")))
Run Code Online (Sandbox Code Playgroud)
我使用此代码绘制图形:
col = c("#FF0000", "#FF0000", "#FF0000")
par(mar=c(7,4,4,2)+0.1)
png(filename='test.png', width=800, height=750)
heatmap.2(sel, col=redgreen(75), scale="row", ColSideColors=col,
key=TRUE, symkey=FALSE, density.info="none", trace="none")
graphics.off()
Run Code Online (Sandbox Code Playgroud)
这给了我这个热图:
如您所见,x轴标签被切断.我试图使par(mar=c(7,4,4,2)+0.1)
(从默认值par(mar=c(5,4,4,2)+0.1)
)更大的边距,但这不会改变标签被切断的方式.
我试图改变lmat
, …
可以删除热图调色板(右边的小矩形)吗?
这是我的数据
a b c
1 181 80 121 10 34 20
2 18 20 17 20 13 20
3 12 20 5 30 20 20
Run Code Online (Sandbox Code Playgroud)
这是我的gnuplot脚本
set term pos eps font 20
unset key
set nocbtics
set palette rgbformulae -7, 2, -7
set title "Faults"
set size 1, 0.5
set output 'heatmap2.eps'
YTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' 'data2.dat'`"
XTICS="`head -1 'data2.dat'`"
set for [i=1:words(XTICS)] xtics ( word(XTICS,i) i-1 )
set for [i=1:words(YTICS)] ytics ( word(YTICS,i) i-1 )
set for [i=1:words(XTICS)] …
Run Code Online (Sandbox Code Playgroud) 这个问题来自以下两个主题:
如何使用stat_bin2d()来计算ggplot2中的计数标签?
在第一个主题中,用户想要使用stat_bin2d生成热图,然后想要在热图上写入每个bin的计数.用户最初想要使用的方法不起作用,这是表明stat_bin2d设计为使用geom ="rect"而不是"text"的最佳答案.没有给出令人满意的答复.
第二个问题几乎与第一个问题相同,但有一个关键的区别,即第二个问题中的变量是文本,而不是数字.答案产生了所需的结果,将bin的计数值放在stat_2d热图中的bin上.
为了比较我准备以下代码的两种方法:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
ggplot(data, aes(x = x, y = y))
geom_bin2d() +
stat_bin2d(geom="text", aes(label=..count..))
Run Code Online (Sandbox Code Playgroud)
我们知道这首先给你错误:
"错误:geom_text需要以下缺失的美学:x,y".
与第一个问题中的问题相同.有趣的是,从stat_bin2d更改为stat_binhex可以正常工作:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
ggplot(data, aes(x = x, y = y))
geom_binhex() +
stat_binhex(geom="text", aes(label=..count..))
Run Code Online (Sandbox Code Playgroud)
这是伟大的,但一般来说,我不认为十六进制binning是非常清楚的,并且为了我的目的,我不会为我想要的数据工作.我真的想使用stat_2d.
为了实现这一点,我根据第二个答案准备了以下工作:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
x_t<-as.character(round(data$x,.1))
y_t<-as.character(round(data$y,.1))
x_x<-as.character(seq(-3,3),1)
y_y<-as.character(seq(-3,3),1)
data<-cbind(data,x_t,y_t)
ggplot(data, aes(x = x_t, y = y_t)) +
geom_bin2d() +
stat_bin2d(geom="text", aes(label=..count..))+
scale_x_discrete(limits =x_x) …
Run Code Online (Sandbox Code Playgroud) 我想制作一个热图,其中颜色托盘为绿色到红色,但0的值为白色.我开始使用基于因子的不同高填充颜色的geom_tile热图,以及其他SO,但是不能完全得到我需要的东西.例如,使用以下数据库:
df <- data.frame(expand.grid(1:10,1:10))
df$z <- sample(0:10, nrow(df), replace=T)
Run Code Online (Sandbox Code Playgroud)
我可以创建这个情节:
ggplot(df,aes(x = Var1,y = Var2,fill = z)) +
geom_tile() +
scale_fill_gradient(low = "green", high = "red")
Run Code Online (Sandbox Code Playgroud)
ggplot(df,aes(x = Var1,y = Var2,fill = z)) +
geom_tile() +
scale_fill_gradient(low="green", high="red", limits=c(1, 10))
Run Code Online (Sandbox Code Playgroud)
而白色为0,但我失去了绿色到红色:
ggplot(df,aes(x = Var1,y = Var2,fill = z)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "red")
Run Code Online (Sandbox Code Playgroud)
而且我根本不能使用brewer scale(尽管我认为我错过了一些基于错误的简单).
ggplot(df,aes(x = Var1,y = Var2,fill = z)) +
geom_tile() +
scale_fill_brewer("Greens")
Run Code Online (Sandbox Code Playgroud)
我应该用NA替换0吗?任何帮助,将不胜感激.
我正在绘制 aSeaborn heatmap
并且我想将y-axis
刻度标签居中,但找不到方法来做到这一点。'va'
text 属性似乎在 上不可用yticks()
。
考虑下图
生成此图的代码:
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
#Generate dummy data
startDate = '2017-11-25'
dateList = pd.date_range(startDate, periods=365).tolist()
df = pd.DataFrame({'Date': dateList,
'Distance': np.random.normal(loc=15, scale=15, size=(365,))
})
#set week and day
df['Week'] = [x.isocalendar()[1] for x in df['Date']]
df['Day'] = [x.isocalendar()[2] for x in df['Date']]
#create dataset for heatmap
#group by axis to …
Run Code Online (Sandbox Code Playgroud) 我想绘制一个seaborn.heatmap
并仅注释一些行/列。
所有单元格都有注释的示例:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
n1 = 5
n2 = 10
M = np.random.random((n1, n2))
fig, ax = plt.subplots()
sns.heatmap(ax = ax, data = M, annot = True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
按照这些示例(添加值注释段落),可以将seaborn.heatmap
每个单元格的注释作为annot
参数传递给数组:
annot :布尔或矩形数据集,可选
如果为 True,则在每个单元格中写入数据值。如果是与数据具有相同形状的类似数组,则使用它来注释热图而不是数据。请注意,DataFrame 将匹配位置,而不是索引。
如果我尝试生成一个数组str
并将其作为annot
参数传递给,seaborn.heatmap
我会收到以下错误:
Traceback (most recent call last):
File "C:/.../myfile.py", line 16, in <module>
sns.heatmap(ax = ax, data = M, annot …
Run Code Online (Sandbox Code Playgroud)