相关疑难解决方法(0)

设置Matplotlib颜色条大小以匹配图形

我不能让像这样的imshow图上的colorbar与图形的高度相同,而不是事后使用Photoshop.我如何达到匹配的高度?颜色条尺寸不匹配的示例

python image matplotlib

134
推荐指数
7
解决办法
10万
查看次数

相关热图

我想用热图表示相关矩阵.R中有一个叫做correlogram的东西,但我不认为Python中有这样的东西.

我怎样才能做到这一点?值从-1到1,例如:

[[ 1.          0.00279981  0.95173379  0.02486161 -0.00324926 -0.00432099]
 [ 0.00279981  1.          0.17728303  0.64425774  0.30735071  0.37379443]
 [ 0.95173379  0.17728303  1.          0.27072266  0.02549031  0.03324756]
 [ 0.02486161  0.64425774  0.27072266  1.          0.18336236  0.18913512]
 [-0.00324926  0.30735071  0.02549031  0.18336236  1.          0.77678274]
 [-0.00432099  0.37379443  0.03324756  0.18913512  0.77678274  1.        ]]
Run Code Online (Sandbox Code Playgroud)

我能够根据另一个问题生成以下热图,但问题是我的值被'切'为0,所以我希望有一个从蓝色(-1)到红色(1)的地图,或者类似的东西,但这里低于0的值没有以适当的方式呈现.

在此输入图像描述

这是代码:

plt.imshow(correlation_matrix,cmap='hot',interpolation='nearest')
Run Code Online (Sandbox Code Playgroud)

python correlation

33
推荐指数
4
解决办法
8万
查看次数

Imshow具有相同颜色条的子图

我想制作4 imshow个子图,但它们都共享相同的颜色图.Matplotlib根据矩阵的条目自动调整色彩图上的比例.例如,如果我的一个矩阵的所有条目都为10而另一个条目的所有条目都等于5并且我使用了Greys色彩映射,那么我的一个子图应该是完全黑色而另一个应该是完全灰色的.但他们两个最终都变成了黑色.如何使所有子图在色图上共享相同的比例?

python matplotlib

27
推荐指数
3
解决办法
5万
查看次数

从matplotlib中的给定色彩映射创建颜色生成器

我有一系列的线条,每个线条需要用单独的颜色绘制.每条线实际上由几个数据集(正面,负面区域等)组成,因此我希望能够创建一个生成器,它将在光谱中一次提供一种颜色,例如此处显示gist_rainbow地图.

我发现了以下作品,但它看起来很复杂,更重要的是难以记住,

from pylab import *

NUM_COLORS = 22

mp = cm.datad['gist_rainbow']
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS)
...
# Then in a for loop
    this_color = get_color(float(i)/NUM_COLORS)
Run Code Online (Sandbox Code Playgroud)

而且,它不包括gist_rainbow地图中的颜色范围,我必须重新定义地图.

也许发电机不是最好的方法,如果是这样,可接受的方式是什么?

python matplotlib color-mapping

16
推荐指数
1
解决办法
2万
查看次数

独立色条(matplotlib)

我正在使用matplotlib在python中渲染一些图形,并将它们包含在LaTeX文件中(使用LaTex的漂亮表格对齐而不是摆弄matplotlib ImageGrid等).我想创建并保存一个独立的颜色条savefig,而无需使用imshow.

(vlim, vmax参数,以及cmap可以明确提供)

我能找到的唯一方法是相当复杂的(根据我的理解)在画布上绘制一个硬编码的矩形:http: //matplotlib.org/examples/api/colorbar_only.html

有没有一种优雅的方法来创建一个matplotlib独立颜色条?

python matplotlib

14
推荐指数
5
解决办法
1万
查看次数

使用轮廓设置颜色条范围

这似乎是这个问题的重复:

在 matplotlib 中设置颜色条范围

基本上我想设置颜色条范围来设置限制,例如 0 到 2。当我使用 vmin 和 vmax 时,contourf 中的颜色范围设置正确,但颜色条只显示裁剪范围,即链接中的解决方案没有使用contourf 时似乎有效。我错过了一些明显的东西吗?

import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
img=plt.contourf(fld,20,cmap='coolwarm',vmin=0,vmax=2)
plt.colorbar(img)
Run Code Online (Sandbox Code Playgroud)

导致

在此处输入图片说明

如何使用轮廓将颜色条范围强制为 0 到 2?

python matplotlib

10
推荐指数
1
解决办法
7052
查看次数

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

我试图绘制具有相同比例的字段.上面的图像值比下面的图像值高10倍,但它们在imshow中变成了相同的颜色.如何将两者设置为具有相同的颜色比例?

我添加了我正在使用的代码图像..

两个imshow情节

def show_field(field1,field2):
    fig = plt.figure()
    ax = fig.add_subplot(2, 1, 1)
    ax.imshow(field1,cmap=plt.cm.YlGn)
    ax.set_adjustable('box-forced')
    ax.autoscale(False)
    ax2 = fig.add_subplot(2, 1, 2)
    ax2.set_adjustable('box-forced')
    ax2.imshow(field2,cmap=plt.cm.YlGn)
    ax2.autoscale(False)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib colorbar imshow

9
推荐指数
1
解决办法
4721
查看次数

在 matplotlib 中使用“contourf”设置颜色条范围

与 contourf 一起使用时如何减少颜色条限制?图表本身的颜色界限用“vmin”和“vmax”很好地设置,但颜色条界限没有被修改。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(20)
y = np.arange(20)
data = x[:,None]+y[None,:]

X,Y = np.meshgrid(x,y)
vmin = 0
vmax = 15

#My attempt
fig,ax = plt.subplots()
contourf_ = ax.contourf(X,Y,data, 400, vmin=vmin, vmax=vmax)
cbar = fig.colorbar(contourf_)
cbar.set_clim( vmin, vmax )
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

# With solution from /sf/ask/3754915111/
levels = np.linspace(vmin, vmax, 400+1)
fig,ax = plt.subplots()
contourf_ = ax.contourf(X,Y,data, levels=levels, vmin=vmin, vmax=vmax)
cbar = fig.colorbar(contourf_)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在 matplotlib 中设置颜色条范围”的解决方案适用于 pcolormesh,但不适用于轮廓。我想要的结果如下所示,但使用的是轮廓。

fig,ax = plt.subplots()
contourf_ …
Run Code Online (Sandbox Code Playgroud)

python matplotlib colorbar

7
推荐指数
1
解决办法
9840
查看次数

将顶部和底部值标签添加到颜色条

我想将顶部和底部值添加到我的颜色条中。因此,顶部值的范围是我的数据中值的最大数量,底部是我数据中的最小数量

在此输入图像描述

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

data = np.genfromtxt("E:\\data\\data1.txt", delimiter="\t")
minVal =  np.min(data[np.nonzero(data)])
maxVal =  np.max(data[np.nonzero(data)])

fig, ax = plt.subplots()
im = ax.imshow(data, cmap='Purples',
           interpolation='nearest',
           norm=matplotlib.colors.LogNorm(),
           vmin=minVal,vmax = maxVal,    
               )

cbar = fig.colorbar(im)

print("min ",minVal)
print("max", maxVal)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib heatmap colorbar

6
推荐指数
1
解决办法
3591
查看次数

Matplotlib imshow - 显示不同的颜色

我有浮点数的n个矩阵(np.array),我想用imshow将它们绘制在一起,但每个颜色的值都有不同的颜色范围.例如,n = white-> blue,n + 1 = white - > red等.有没有办法做到这一点?

矩阵具有相同的大小,并且相互着色不是太大问题,因为大多数矩阵的值为0(希望是白色).

我想的是:

第一个矩阵

000
010
000
Run Code Online (Sandbox Code Playgroud)

第二个矩阵

000
000
001
Run Code Online (Sandbox Code Playgroud)

所以我想也许我可以把第二个矩阵转换成:

222
222
223
Run Code Online (Sandbox Code Playgroud)

然后将0-> 1白色变为蓝色,2-> 3白色变为红色.

遗憾的是,我不知道如何使用matplotlib色彩图进行此操作.

python numpy matplotlib

1
推荐指数
1
解决办法
3853
查看次数