我希望seaborn热图在热图的每个单元格中显示多个值。这里有一个我想看到的手动示例,只是为了清楚:
data = np.array([[0.000000,0.000000],[-0.231049,0.000000],[-0.231049,0.000000]])
labels = np.array([['A\nExtra Stuff','B'],['C','D'],['E','F']])
fig, ax = plt.subplots()
ax = sns.heatmap(data, annot = labels, fmt = '')
这里作为一个例子来获得海运。加热以显示单元格中的flightsRoundUp
值。
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
def RoundUp(x):
return int(np.ceil(x/10)*10)
# Load the example flights dataset and conver to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")
flightsRoundUp = flights.applymap(RoundUp)
# Draw a heatmap with the numeric values in each cell
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(flights, annot=flightsRoundUp, fmt="", linewidths=.5, ax=ax)
在所有单元格中同时显示flightsRoundUp
和flights
的最佳方法是什么?类似于上面的第一个手动示例,但以类似矢量化的方式对所有单元格进行。..
3条答案
按热度按时间vxf3dgd41#
Rotail的答案对我不起作用,我在应用lambda函数时出错。
然而,我发现了一个解决方案,利用了seaborn将连续的数字绘制在彼此之上的事实。您所要做的就是使用一个对heatmap的调用来建立图形,然后对每个注解进行后续调用。使用annot_kws参数确保文本不会相互覆盖。
x7yiwoj42#
以下也适用于我:
4ktjp1zp3#
你应该能够设置
fmt=""
和格式化你的标签与适当的"\n"
有多行注解。1