seaborn color_palette 作为 matplotlib 颜色图
seaborn color_palette as matplotlib colormap
Seaborn 提供了一个名为 color_palette 的函数,它允许您轻松地为绘图创建新的 color_palettes。
colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]
color_palette = sns.color_palette(colors)
我想将 color_palette 转换为 cmap,我可以在 matplotlib 中使用它,但我不知道该怎么做。
可悲的是,只有 "cubehelix_palette"、"light_palette"、……这样的函数有一个 "as_cmap" 参数。不幸的是,"color_palette" 没有。
您必须将颜色列表从 seaborn 调色板转换为 matplolib 的颜色图(感谢@RafaelLopes 提出的更改):
import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
from matplotlib.colors import ListedColormap
# construct cmap
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex())
N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()
大多数用于生成调色板的 seaborn 方法都有一个可选参数 as_cmap
,默认情况下为 False
。您可以使用直接获取 Matplotlib 颜色图:
import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
# construct cmap
my_cmap = sns.light_palette("Navy", as_cmap=True)
N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()
第一个答案在某种程度上是正确的,但是太长了,有很多不必要的信息。正确而简短的答案是:
要将任何 sns.color_palette()
转换为兼容 matplotlib 的 cmap,您需要两行代码
from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
只是一个额外的提示 - 如果想要连续 colorbar/colormap,添加 256 作为 Seaborn colorscheme 所需的颜色数量会有很大帮助。
cmap = ListedColormap(sns.color_palette("Spectral",256))
Seaborn 提供了一个名为 color_palette 的函数,它允许您轻松地为绘图创建新的 color_palettes。
colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]
color_palette = sns.color_palette(colors)
我想将 color_palette 转换为 cmap,我可以在 matplotlib 中使用它,但我不知道该怎么做。
可悲的是,只有 "cubehelix_palette"、"light_palette"、……这样的函数有一个 "as_cmap" 参数。不幸的是,"color_palette" 没有。
您必须将颜色列表从 seaborn 调色板转换为 matplolib 的颜色图(感谢@RafaelLopes 提出的更改):
import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
from matplotlib.colors import ListedColormap
# construct cmap
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex())
N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()
大多数用于生成调色板的 seaborn 方法都有一个可选参数 as_cmap
,默认情况下为 False
。您可以使用直接获取 Matplotlib 颜色图:
import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
# construct cmap
my_cmap = sns.light_palette("Navy", as_cmap=True)
N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()
第一个答案在某种程度上是正确的,但是太长了,有很多不必要的信息。正确而简短的答案是:
要将任何 sns.color_palette()
转换为兼容 matplotlib 的 cmap,您需要两行代码
from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
只是一个额外的提示 - 如果想要连续 colorbar/colormap,添加 256 作为 Seaborn colorscheme 所需的颜色数量会有很大帮助。
cmap = ListedColormap(sns.color_palette("Spectral",256))