python pyplot : colorbar on contourf and scatter in same plot

标签 python matplotlib colorbar scatter contourf

我有两个不同的数据集。一个是 numpy NxM 矩阵,另一个是 Lx3 pandas 数据帧。我将散点图(Lx3 数据帧)叠加在等高线图(NxM)之上,颜色条根据散点图数据进行缩放。 如何根据两个数据集强制颜色条缩放(如何同步两个绘图层上的颜色条)

import numpy as np
import matplotlib.pyplot as plt

#generate random matrix with min value of 1 and max value 5
xx = np.random.choice(a = [1,2,3,4,5],p = [1/5.]*5,size=(100,100))

#contourf plot of the xx matrix
plt.contourf(np.arange(100),np.arange(100),xx)

#generate x and y axis of the new dataframe
dfxy = np.random.choice(range(20,80),p = [1/float(len(range(20,80)))]*len(range(20,80)),size = (100,2))

#generate z values of the dataframe with min value 10 and max value 15
dfz = np.random.choice(a = np.linspace(10,15,10),p = [1/10.]*10,size = 100)
plt.scatter(dfxy[:,0],dfxy[:,1],c=dfz,s=80)
cb = plt.colorbar()
#cb.set_clim([1,15])
plt.show()

我尝试设置限制,但结果对我来说仍然没有意义。 contourf 似乎仍然没有在颜色栏中表示。 enter image description here

最佳答案

您需要对两个图使用相同的颜色归一化。这可以通过使用 norm 关键字参数为两个图提供一个 matplotlib.colors.Normalize 实例来实现。

import matplotlib.pyplot as plt 
import matplotlib.colors
import numpy as np

#generate random matrix with min value of 1 and max value 5
xx = np.random.choice(a = [1,2,3,4,5],p = [1/5.]*5,size=(100,100))
#generate x and y axis of the new dataframe
dfxy = np.random.choice(range(20,80),p = [1/float(len(range(20,80)))]*len(range(20,80)),size = (100,2))
#generate z values of the dataframe with min value 10 and max value 15
dfz = np.random.choice(a = np.linspace(0,7,10),size = 100)


mi = np.min((dfz.min(), xx.min()))
ma = np.max((dfz.max(), xx.max()))
norm = matplotlib.colors.Normalize(vmin=mi,vmax=ma)
plt.contourf(np.arange(100),np.arange(100),xx, norm=norm, cmap ="jet")
plt.scatter(dfxy[:,0],dfxy[:,1],c=dfz,s=80, norm=norm, cmap ="jet", edgecolor="k")
cb = plt.colorbar()

plt.show()

此处两个图共享相同的配色方案,因此可以使用单个颜色条。

关于 python pyplot : colorbar on contourf and scatter in same plot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228113/

相关文章:

python - Matplotlib 透明颜色图

python - 如何在不使用 with open 的情况下检查文件是否为空?

python - 按元素应用,将结果行连接到 DataFrame 中

python - 如何随机选择具有嵌套列表的列表

python - plt图python的X轴困惑在一起

python - xticks 和 yticks 在使用 matplotlib 的散点图中不显示几个值

python - 在 Python 中使用 Pandas/matplotlib 更改 X 轴标签

python - matplotlib colorbar 小刻度颜色和小刻度数量

python - 寻找多个序列之间的共享基序

python - 将两个 matplotlib imshow 图设置为具有相同的颜色图比例