我想绘制二维标量数据,我通常会使用matplotlib.pyplot.imshow或来绘制sns.heatmap。考虑这个例子:
data = [[10, 20, 30], [50, 50, 100], [80, 60, 10]]
fix, ax = plt.subplots()
ax.imshow(data, cmap=plt.cm.YlGn)
Run Code Online (Sandbox Code Playgroud)
现在我还想在顶部和右侧有一维条形图,显示每列/行中的值的总和 - 就像那样sns.jointplot。然而,sns.jointplot似乎只适用于分类数据,生成直方图(带有kind='hist')、散点图等 - 如果我想直接指定单元格的值,我不知道如何使用它。对于seaborn 来说这样的事情可能吗?
我的图中的轴y将是天(一个月内),x轴将是小时。我的数据如下所示:
该字段Cost Difference应构成图中相应字段的阴影。
我有两张表,一张是从热图生成的,一张是需要在辅助 y 轴上绘制折线图的。创建热图没有问题:
green = sns.light_palette("seagreen", reverse=True, as_cmap=True)
green.set_over('tomato')
sns.set(rc={'figure.figsize': (20.7, 10.27)})
sns.set(font_scale=2)
ax=sns.heatmap(df, square=True, linewidths=.5, annot=False, fmt='.3f',
cmap=green, vmin=0, vmax=0.05)
Run Code Online (Sandbox Code Playgroud)
当我尝试在热图顶部绘制线条时,问题就开始了。该线应具有相同的 x 轴值,并且这些值应位于辅助 y 轴中。df 行如下所示:
>>>day value
0 14 315.7
1 15 312.3
2 16 305.9
3 17 115.2
4 18 163.2
5 19 305.78
...
Run Code Online (Sandbox Code Playgroud)
我尝试将其绘制在顶部,如下所述:
green = sns.light_palette("seagreen", reverse=True, as_cmap=True)
green.set_over('tomato')
sns.set(rc={'figure.figsize': (20.7, 10.27)})
sns.set(font_scale=2)
ax=sns.heatmap(df, square=True, linewidths=.5, annot=False, fmt='.3f',
cmap=green, vmin=0, vmax=0.05)
ax2=plt.twinx()
ax2.plot(df_line['day'], df_line['value'],color="blue")
line = ax2.lines[0]
line.set_xdata(line.get_xdata() + 0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但后来我把线“移”到了左侧,我在 …
我正在做一个 NLP 项目,研究 10 位不同经典摇滚艺术家各自作品之间的余弦相似度。我已经完成了相似性查询并创建了一个名为的数据框,similarities如下所示。
我similarities通过首先构建一个空数据框来构建数据框,其中以艺术家姓名作为索引和列名称,然后运行以下代码来运行相似性查询并使用分数填充数据框:
artist_words = data['lyrics'][artist]
artist_vec_bow = dictionary.doc2bow(artist_words.lower().split())
artist_vec_lsi = lsi[artist_vec_bow]
artist_sims = index[artist_vec_lsi]
artist_sims_sorted = sorted(enumerate(artist_sims), key=lambda item: -item[1])
for position, score in artist_sims_sorted:
similarities.at[artist, musicians[position][1]] = score
Run Code Online (Sandbox Code Playgroud)
data是一个数据框,以艺术家姓名作为索引,并有一列名为 ,lyrics其中歌词作为一个长字符串输入。
我想创建一个 Seaborn 热图来可视化 DataFrame 中指示的相关性。
但是当我运行以下代码时:
sns.heatmap(similarities)
我收到一条很长的错误消息,其结尾为:
AttributeError: 'NoneType' object has no attribute 'reshape'
谁能帮我弄清楚如何形象化这一点?
similarities.info()返回以下内容:
Index: 11 entries, bob_dylan to willie_nelson
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- ----- …Run Code Online (Sandbox Code Playgroud) 如果我有一个整数向量(或者如果我将它放入矩阵中),是否可以使用 ggplot 或其他包来绘制热图,这些包可以将每个点作为圆形而不是平铺?
> counts
[1] 1949 1690 1935 2480 1441 1141 2079 1587 517 1028 535 2180 1692 3916 1784
[16] 3028 1911 1329 1759 1478 1080 2835 2187 3230 2932 3527 1538 1489 1493 1170
[31] 3311 4982 4842 4899 1339 3594 2562 1821 1077 1072 4312 3395 3522 1037 3270
[46] 4813 1686 1955 3290 1288 2592 3717 213 2840 3938 3882 1807 1582 2519 2600
[61] 4093 2318 3028 3074 1833 3453 2539 2665 2491 2696 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在函数调用graphics::rect的一行周围添加矩形框(即),heatmap如下所示:
stats::heatmap(matrix(data = rnorm(25),nrow = 5,ncol = 5),Colv = NA,scale = "none")
Run Code Online (Sandbox Code Playgroud)
为了确定参数,rect我需要能够自动检索绘制的热图的 xlim 和 ylim (不是侧面的树状图),但我不知道该怎么做..限制似乎并不存在为 1:5(对于本例)。
我在R中有一维数据向量,我想找到对应于这个数据的热图颜色.例如:
data = c(12,32,33,41,5)
Run Code Online (Sandbox Code Playgroud)
然后我想找到一个与该矢量对应的HEX颜色矢量 - 比如更高的值有更深的颜色,更低的值有更浅的颜色或类似的东西.
是否有任何包/功能可以做到这一点?
谢谢!
我有很多列表包含不同数量的名义元素.我想将每个列表与每个其他列表进行比较,并针对每个组合计算两个列表共享的元素数量.我不是统计学家,但我认为结果在矩阵中最容易表示.
list1=["Joe","Hanna","Alice"]
list2=["Martin","Ted","Joe"]
list3=["Hanna","Ted","Joe"]
Run Code Online (Sandbox Code Playgroud)

之后我想以图形方式表示结果,可能使用热图或聚类表示.
任何人都可以给我一些提示如何使用R?还有什么是好的代表?非常感谢!
假设我以通常的方式设置了Google热图图层:
heatmap = new google.maps.visualization.HeatmapLayer({
radius: 20,
opacity: 0.5,
gradient: g
});
heatmap.setMap(map);
Run Code Online (Sandbox Code Playgroud)
哪里:
var g = [
'rgba(255, 0, 0, 1)',
'rgba(255, 255, 0, 0.9)',
'rgba(0, 255, 0, 0.7)',
'rgba(173, 255, 47, 0.5)',
'rgba(152, 251, 152, 0)',
'rgba(152, 251, 152, 0)',
'rgba(0, 0, 238, 0.5)',
'rgba(186, 85, 211, 0.7)',
'rgba(255, 0, 255, 0.9)',
'rgba(255, 0, 0, 1)'
]
Run Code Online (Sandbox Code Playgroud)
我正在热映射的事情取0到1的范围.我想显示一个热点,接近0和接近1的值和接近0.5的中性(冷)点.这就是为什么我有更高的不透明度接近该g变量的开头和结尾.
问题是热图图层将NO数据解释为0,因此将地图的空白区域热映射为红色.我想要的是0和1附近的数据是红色的,没有数据的区域是单独的.
有什么建议?
我想将我的数据绘制为具有以下结构的热图:
X = [1,1,1,1,1,1,1,1,1,1],
Y = [1,2,3,4,5,6,7,8,9,10]
Z = [0.2, 0.33, 0.1, 0.25, 0.0, 0.9, 0.75, 0.88, 0.44, 0.95]
x和y轴应由X和Y表示,而'heat'由Z的值表示.
例如,在坐标(x,y)=(1,2)处,强度应为0.33如何使用matplotlib实现这一目标?查看与关键字热图有关的帖子,或甚至与术语轮廓图相关的帖子,我还无法将其转移到此问题.
提前感谢任何提示Dan
我试图使用matplotlib绘制热图,类似于plotly的热图。我能够通过matshow图的大小得到输出很小。下图是
以下是我的代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
z = []
for _ in range(7):
new_row = []
for __ in range(180):
new_row.append(np.random.poisson())
z.append(list(new_row))
df1 = pd.DataFrame(np.array(z), columns=range(len(z[0])))
fig = plt.figure(figsize=(20,10))
ax = fig.add_subplot(111)
cax = ax.matshow(df1, interpolation='nearest', cmap='coolwarm')
fig.colorbar(cax)
ax.set_xticklabels([''] + list(df1.columns))
ax.set_yticklabels([''] + list(df1.index))
plt.show()
Run Code Online (Sandbox Code Playgroud)
请帮助。
heatmap ×10
matplotlib ×5
python ×4
r ×4
seaborn ×3
correlation ×1
ggplot2 ×1
google-maps ×1
line-plot ×1
matrix ×1
similarity ×1