我刚刚开始使用matplotlib和seaborn来绘制我的图形。这是我到目前为止编写的代码
count = 1
l=[13,0,47,29,10]
plt.figure(figsize=(30,40))
for ww in l:
temp_dict = defaultdict(list)
entropies = list()
for k,v in df.ix[ww].iteritems():
e = 0
for i in v:
temp_dict[k].append(float(i))
if not float(i) == 0:
e += -1.0*float(i)*log10(float(i))
entropies.append(e)
y = entropies
x=(range(len(entropies)))
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
plt.subplot(len(lista_autori),2,count)
tdf = pd.DataFrame.from_dict(temp_dict, orient='columns')
a = tdf.dropna()
sns.set(font_scale=2)
#sns.factorplot(size=2, aspect=1)
sns.heatmap(a,linewidths=.5,cmap="RdBu_r")
plt.xlabel(ur'year')
plt.ylabel(ur'$PACS$')
count +=1
plt.subplot(len(lista_autori),2,count)
plt.plot(x,y)
x1 = (range(28))
y1 = [slope*i + intercept for i in x1]
plt.plot(x1,y1)
count +=1
plt.tight_layout();
结果如下:
我想调整每一行的大小,将行的2/3分配给左侧图片,剩下的则分配给右侧图片。我试着看看here给出的答案,但是当我必须混合斧头和海啸的热图时,我发现了一些困难。任何帮助或其他解决方案?
答案 0 :(得分:1)
linked question的答案直接告诉您如何使用GridSpec实现具有不相等列宽的网格。我在这里看不到太大差异,但也许以下内容对你来说更容易理解,因为它使用了seaborn热图,不止一行而且没有“ax”。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
import seaborn as sns
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
X = np.random.rand(3,4)
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(5, 2, width_ratios=[2, 1])
for i in range(5):
plt.subplot(gs[i*2+0])
sns.heatmap(X)
plt.subplot(gs[i*2+1])
plt.plot(x,y)
plt.show()