微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在颜色之间勾选标签离散着色器

如何解决在颜色之间勾选标签离散着色器

嗨,我想将刻度标签放在颜色之间(间隔的中心),并且该图由离散颜色绘制。但是最小值不是 0。我该如何编写代码来做到这一点? 我使用以下代码来做到这一点,但我得到的是错误的...

n_clusters = len(cbar_tick_label)
tick_locs = (np.arange(n_clusters)+0.5)*(n_clusters-1)/(n_clusters)
cbar.set_ticks(tick_locs)
cbar.set_ticklabels(cbar_tick_label)

代码来自问题:Discrete Color Bar with Tick labels in between colors。但是当数据的最小值不为零时它不起作用。 谢谢!

解决方法

假设有 N(例如 6 个)集群。如果将最小数字(例如 5)到最大数字(例如 10)的范围细分为 N 等份,则颜色单元格之间的每个边框都会有一个勾号。细分为 2*N+1 等份,也会在每个颜色单元格的中心有一个勾号。现在,跳过这些 2*N+1 滴答中的每一个,我们将只剩下细胞中心。所以,np.linspace(5,10,6*2+1) 是边界和中心的刻度;取 np.linspace(5,6*2+1)[1::2] 将只是中心。

import numpy as np
import matplotlib.pyplot as plt

x,y = np.random.rand(2,100)
c = np.random.randint(5,11,x.shape)
n_clusters = c.max() - c.min() + 1

fig,ax = plt.subplots()
cmap = plt.get_cmap('inferno_r',n_clusters)
scat = ax.scatter(x,y,c=c,cmap=cmap)
cbar = plt.colorbar(scat)

tick_locs = np.linspace(c.min(),c.max(),2 * n_clusters + 1)[1::2]
cbar_tick_label = np.arange(c.min(),c.max() + 1)
cbar.set_ticks(tick_locs)
cbar.set_ticklabels(cbar_tick_label)
plt.show()

example plot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?