[英]Add axis to colorbar in python matplotlib
I am trying to produce a figure like the following in python: 我试图在python中生成如下图:
I am done with most part of it and currently based on what I want it looks like this: 我完成了它的大部分内容,目前基于我想要的样子:
And my code is: 我的代码是:
plt.scatter(x,y,marker="h",s=100,c=color)
plt.xscale('log')
plt.yscale('log')
plt.xlim([1, 10**3])
plt.ylim([1, 10**3])
plt.colorbar()
plt.show()
Is there any way to make the current colorbar look like the one on top? 有没有办法让当前的colorbar看起来像顶部的那个? So to make it smaller and add axis to it?
那么要缩小它并添加轴吗?
Any help would be much appreciated. 任何帮助将非常感激。
The key here is the cax
kwarg to colorbar
. 这里的关键是
cax
kwarg到colorbar
。 You'll need to create an inset axes, and then use that axes for the colorbar. 您需要创建插入轴,然后将该轴用于颜色条。
As an example: 举个例子:
import numpy as np
import matplotlib.pyplot as plt
npoints = 1000
x, y = np.random.normal(10, 2, (2, npoints))
fig, ax = plt.subplots()
artist = ax.hexbin(x, y, gridsize=20, cmap='gray_r', edgecolor='white')
# Create the inset axes and use it for the colorbar.
cax = fig.add_axes([0.8, 0.15, 0.05, 0.3])
cbar = fig.colorbar(artist, cax=cax)
plt.show()
If you wanted to get fancy and more precisely match things (Note: I'm using hexbin here, which doesn't support log axes, so I'm leaving that part out.) 如果你想得到更精确和更精确匹配的东西(注意:我在这里使用hexbin,它不支持日志轴,所以我要离开那部分。)
import numpy as np
import matplotlib.pyplot as plt
npoints = 1000
x, y = np.random.normal(10, 2, (2, npoints))
fig, ax = plt.subplots()
artist = ax.hexbin(x, y, gridsize=20, cmap='gray_r', edgecolor='white')
cax = fig.add_axes([0.8, 0.15, 0.05, 0.3])
cbar = fig.colorbar(artist, cax=cax)
ax.spines['right'].set(visible=False)
ax.spines['top'].set(visible=False)
ax.tick_params(top=False, right=False)
cbar.set_ticks([5, 10, 15])
cbar.ax.set_title('Bin Counts', ha='left', x=0)
cbar.ax.tick_params(axis='y', color='white', left=True, right=True,
length=5, width=1.5)
cbar.outline.remove()
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.