使用python中的matplotlib制作自定义颜色图

夏洛克85

我有一张正在用matplotlib显示的图像。

在此处输入图片说明

该图像由以下代码生成:

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


labels = ['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6']

data = np.array(
 [[ 0.000, 0.120, 0.043, 0.094, 0.037, 0.045],
  [ 0.120, 0.000, 0.108, 0.107, 0.105, 0.108],
  [ 0.043, 0.108, 0.000, 0.083, 0.043, 0.042],
  [ 0.094, 0.107, 0.083, 0.000, 0.083, 0.089],
  [ 0.037, 0.105, 0.043, 0.083, 0.000, 2.440],
  [ 0.045, 0.108, 0.042, 0.089, 2.440, 0.000]])


mask =  np.tri(data.shape[0], k=-1)
data = np.ma.array(data, mask=mask) # Mask out the lower triangle of data.

fig, ax = plt.subplots(sharex=True)
im = ax.pcolor(data, edgecolors='black', linewidths=0.3)

# Format
fig = plt.gcf()
fig.set_size_inches(10, 10)

ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)

# Turn off the frame.
ax.set_frame_on(False)
ax.set_aspect('equal')  # Ensure heatmap cells are square.

# Want a more natural, table-like display.
ax.invert_yaxis()
ax.yaxis.tick_right()
ax.xaxis.tick_top()

ax.set_xticklabels(labels, minor=False)
ax.set_yticklabels(labels, minor=False)

# Rotate the upper labels.
plt.xticks(rotation=90)
ax.grid(False)
ax = plt.gca()

for t in ax.xaxis.get_major_ticks():
    t.tick1On = False
    t.tick2On = False
for t in ax.yaxis.get_major_ticks():
    t.tick1On = False
    t.tick2On = False

fig.colorbar(im)

fig.savefig('out.png', transparent=False, bbox_inches='tight', pad_inches=0)

我想应用自定义颜色图,以使值:

  • 0-1之间是蓝色和白色的线性渐变
  • 1-3之间是从白色到红色的线性渐变。

任何帮助将不胜感激。

乔·金顿

有多种方法可以做到这一点。在您的情况下,最容易使用LinearSegmentedColormap.from_list和指定颜色的相对位置以及颜色名称。(如果您有均匀间隔的更改,则可以跳过元组而只做from_list('my cmap', ['blue', 'white', 'red'])。)然后,您需要为数据指定一个手动的min和max(将vminand vmaxkwargs设置为imshow/ pcolor/ etc)。

举个例子:

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

data = np.array(
             [[ 0.000, 0.120, 0.043, 0.094, 0.037, 0.045],
              [ 0.120, 0.000, 0.108, 0.107, 0.105, 0.108],
              [ 0.043, 0.108, 0.000, 0.083, 0.043, 0.042],
              [ 0.094, 0.107, 0.083, 0.000, 0.083, 0.089],
              [ 0.037, 0.105, 0.043, 0.083, 0.000, 2.440],
              [ 0.045, 0.108, 0.042, 0.089, 2.440, 0.000]])
mask = np.tri(data.shape[0], k=-1)
data = np.ma.masked_where(mask, data)

vmax = 3.0
cmap = LinearSegmentedColormap.from_list('mycmap', [(0 / vmax, 'blue'),
                                                    (1 / vmax, 'white'),
                                                    (3 / vmax, 'red')]
                                        )

fig, ax = plt.subplots()
im = ax.pcolor(data, cmap=cmap, vmin=0, vmax=vmax, edgecolors='black')
cbar = fig.colorbar(im)

cbar.set_ticks(range(4)) # Integer colorbar tick locations
ax.set(frame_on=False, aspect=1, xticks=[], yticks=[])
ax.invert_yaxis()

plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中制作自定义颜色?

来自分类Dev

在python中绘制自定义图

来自分类Dev

使用python中的matplotlib制作自定义颜色图

来自分类Dev

使用matplotlib自定义类似Colorbar的图

来自分类Dev

Python-使用defaultdict制作自定义对象的字典

来自分类Dev

具有自定义颜色的离散值的matplotlib热图

来自分类Dev

matplotlib中的自定义连续颜色图

来自分类Dev

Python中SciPy树状图的自定义群集颜色(link_color_func?)

来自分类Dev

matplotlib中的自定义颜色图用于3D表面图

来自分类Dev

GeoPandas,MatPlotLib绘制自定义颜色

来自分类Dev

Python-具有0.99和0.999不同颜色的自定义颜色图

来自分类Dev

如何使用gcf()或gca()自定义matplotlib图?

来自分类Dev

如何使用在matplotlib中设置的自定义数字来自定义栏中的颜色?

来自分类Dev

seaborn / matplotlib自定义颜色图

来自分类Dev

Folium GeoJson自定义颜色图

来自分类Dev

自定义Matplotlib子图

来自分类Dev

Python matplotlib自定义颜色栏,用于使用手动分配的颜色绘制的线条

来自分类Dev

自定义Matplotlib颜色图

来自分类Dev

带有浮点范围的自定义颜色图,可用于Matlab中的颜色

来自分类Dev

如何在C#中制作自定义颜色?

来自分类Dev

matplotlib错误栏图-使用自定义颜色图

来自分类Dev

使用CBfit Matlab自定义颜色图

来自分类Dev

如何制作腻子自定义颜色

来自分类Dev

使用python中的matplotlib使用指定的离散颜色映射制作热图

来自分类Dev

matplotlib中的自定义连续颜色图

来自分类Dev

使用 Python (matplotlib) 的自定义标记

来自分类Dev

在轮廓上使用自定义颜色图

来自分类Dev

matplotlib python中的自定义Yaxis图

来自分类Dev

在 matplotlib 中自定义子图

Related 相关文章

热门标签

归档