我无法让像这样的imshow图形上的颜色条与图形的高度相同,因为事后没有使用Photoshop。我如何让高度匹配?
当前回答
这种组合(以及接近这些值)似乎“神奇地”为我工作,以保持颜色条缩放到绘图,无论显示器的大小。
plt.colorbar(im,fraction=0.046, pad=0.04)
它也不需要共享轴,这可以使绘图脱离正方形。
其他回答
创建颜色条时,尝试使用分数和/或收缩参数。
从文件中:
分数0.15;用于颜色条的原始轴的部分 减少1.0;用来缩小颜色条的分数
使用matplotlib AxisDivider可以很容易地做到这一点。
链接页面中的例子也可以不使用子图:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
plt.figure()
ax = plt.gca()
im = ax.imshow(np.arange(100).reshape((10,10)))
# create an axes on the right side of ax. The width of cax will be 5%
# of ax and the padding between cax and ax will be fixed at 0.05 inch.
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
plt.colorbar(im, cax=cax)
如果不想声明另一组轴,我找到的最简单的解决方案是使用figsize调用更改图形大小。
在上面的例子中,我将从
fig = plt.figure(figsize = (12,6))
然后用不同的比例重新渲染,直到颜色条不再使主要情节相形见绌。
上面所有的解决方案都很好,但我喜欢@Steve的和@bejota的最好,因为它们不涉及花哨的调用,而且是通用的。
所谓通用,我的意思是它适用于任何类型的轴,包括GeoAxes。例如,如果你有投影轴进行映射:
projection = cartopy.crs.UTM(zone='17N')
ax = plt.axes(projection=projection)
im = ax.imshow(np.arange(200).reshape((20, 10)))
呼叫
cax = divider.append_axes("right", size=width, pad=pad)
将失败的KeyException: map_projection
因此,处理所有类型轴的颜色条大小的唯一通用方法是:
ax.colorbar(im, fraction=0.046, pad=0.04)
使用0.035到0.046的分数来获得最佳尺寸。但是,分数和填充的值将需要进行调整,以获得最适合您的绘图,并且将根据颜色条的方向是垂直位置还是水平位置而有所不同。
这种组合(以及接近这些值)似乎“神奇地”为我工作,以保持颜色条缩放到绘图,无论显示器的大小。
plt.colorbar(im,fraction=0.046, pad=0.04)
它也不需要共享轴,这可以使绘图脱离正方形。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录