我正在制作一个格子levelplot
,x
并且y
因子范围为[0,1]:
x y level
1 m3134 m3134 1.0000000
2 m3134 m416B 0.4189057
3 m416B m3134 0.2696508
4 m3134 mA20 0.3322170
5 mA20 m3134 0.2454191
6 m3134 mB 0.3176792
...
Run Code Online (Sandbox Code Playgroud)
这是我用来根据这些数据制作图形的R脚本:
#!/foo/bar/bin/Rscript --vanilla
args <- commandArgs(TRUE)
mtxFn <- args[1]
pdfFn <- args[2]
mtx <- read.table(mtxFn, col.names=c("x", "y", "level"))
mtx$level[(mtx$level == 1)] <- NA
library(lattice)
trellis.device(dev=pdf, file=pdfFn)
colors <- colorRampPalette(c('red', 'white'))(256)
fig <- levelplot(level~x*y,
data=mtx,
col.regions=colors,
xlab="",
ylab="",
aspect="iso",
scales=list(
x=list(rot=90)
),
panel=function(...) {
arg <- …
Run Code Online (Sandbox Code Playgroud) 我一直在使用python,pandas和seaborn来获得具有不同colormaps/columns的热图.感谢这个问题,我做了以下事情:
示例Dataframe(sample.csv):
X,a,b,c
A,0.5,0.7,0.4
B,0.9,0.3,0.8
C,0.3,0.4,0.7
Run Code Online (Sandbox Code Playgroud)
使用Seaborn绘制热图
import pandas as pd
import matplotlib as mpl
# Set new Backend to Use Seaborn
# mpl.use('Agg')
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import colorsys
# Working example data:
df = pd.DataFrame([[0.5,0.7,0.4],[.9,.3,.8],[.3,.4,.7]],['A','B','C'])
# Get Color List
N = 3
COL = [colorsys.hsv_to_rgb(x*1.0/N, 0.7, 0.5) for x in range(N)]
with sns.axes_style('white'):
for i, name in enumerate(df.columns):
# Create cmap
colors = COL[i]
cmap = sns.light_palette(colors, …
Run Code Online (Sandbox Code Playgroud) 我目前有两个大数据集,我想比较它们。我分别拥有它们,一个是红色,一个是蓝色,但是我想并排显示红色和蓝色。我该怎么办?
我目前的代码是:
column_labels = list(heatmap_ylabels)
row_labels = list(heatmap_xlabels)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=plt.cm.Reds)
ax.set_xticks(np.arange(9+0.5))
ax.set_yticks(np.arange(140+0.5))
ax.invert_yaxis()
ax.xaxis.tick_top()
ax.set_xticklabels(row_labels, minor=False)
ax.set_yticklabels(column_labels, minor=False)
#plt.show()
plt.savefig('n1_heatmap')
plt.clf()
column_labels = list(heatmap_ylabels)
row_labels = list(heatmap_xlabels)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data1, cmap=plt.cm.Blues)
ax.set_xticks(np.arange(9+0.5))
ax.set_yticks(np.arange(140+0.5))
ax.invert_yaxis()
ax.xaxis.tick_top()
ax.set_xticklabels(row_labels, minor=False)
ax.set_yticklabels(column_labels, minor=False)
plt.savefig('n2_heatmap')
plt.clf()
Run Code Online (Sandbox Code Playgroud)
两者data
并data1
用信息140名不同的列表,从280个不同的文件提取的形成,是有办法,我仍然可以为了使用这两个列表创建一个热图将在同一图中显示这些数据?
例如,我的热图将是 /red/blue/red/blue 等
这是我的热图示例:
编辑:
虽然没有准确显示我想要的内容,但我已经制作了前两个热图之间值差异的热图。
例如: y2 = np.subtract(y, y1)
data2.append(y2)
column_labels = list(heatmap_ylabels)
row_labels = list(heatmap_xlabels)
fig, ax = plt.subplots()
heatmap = …
Run Code Online (Sandbox Code Playgroud) 我现在正在使用 jupyter 笔记本,我正在寻找一种方法,根据其在列(或行)中的相对值,有条件地为熊猫数据框中的每个单元格着色。
最终输出应该是一个熊猫数据框。
从概念上讲,这就像创建一个热图,其中为每列独立定义阴影,并基于列本身的最大值和最小值。