首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >材料库-2问题。普通色条/标签未出现

材料库-2问题。普通色条/标签未出现
EN

Stack Overflow用户
提问于 2014-04-15 18:28:04
回答 2查看 2.5K关注 0票数 1

最后,我把我想要的3幅图和3 subplots...now放在一起,我需要添加一个普通的颜色条,最好是面向水平的。而且,现在我已经将它们作为子图,我丢失了在前一次迭代中的标签。

这些例子似乎表明我是加一个轴,但我不太明白参数中的数字是什么。

代码语言:javascript
复制
def plot_that_2(x_vals, y_vals, z_1_vals, z_2_vals, z_3_vals, figname, units, efficiency_or_not):
    global letter_pic_width    
    plt.close()    #I moved this up from the end of the file because it solved my QTagg problem
    UI = [uniformity_calc(z_1_vals), uniformity_calc(z_2_vals), uniformity_calc(z_3_vals)]
    ranges = [ str(int(np.max(z_1_vals) - np.min(z_1_vals))), str(int(np.max(z_2_vals) - np.min(z_2_vals))), str(int(np.max(z_3_vals) - np.min(z_3_vals)))]
    z_vals = [z_1_vals, z_2_vals, z_3_vals]

    fig = plt.figure(figsize = (letter_pic_width, letter_pic_width/3 ))
    ax0 = fig.add_subplot(1,3,1, aspect = 1)
    ax1 = fig.add_subplot(1,3,2, aspect = 1)
    ax2 = fig.add_subplot(1,3,3, aspect = 1)

    axenames = [ax0, ax1, ax2]

    for z_val, unif, rangenum, ax in zip(z_vals, UI, ranges, axenames):
        ax.scatter(x_vals, y_vals, c = z_val, s = 100, cmap = 'rainbow')
        if efficiency_or_not:
            ax.vmin = 0
            ax.vmax = 1
            ax.xlabel = 'Uniformity: ' + unif
        else:
            ax.xlabel = 'Uniformity: ' + unif + '   ' + rangenum + ' ppm'

    plt.savefig('./'+ figname + '.jpg', dpi = 100) 

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-15 19:35:13

要设置xlabel,请使用ax.set_xlabel('Uniformity: ' + unif)查看有关轴的文档中的更多信息( 这里 )。

链接到的示例使用图形的add_axes方法作为add_subplot的替代方法。数字文件解释了add_axes中的数字:“在左、下、宽、高的位置添加一个轴,其中所有的量都是以图形宽度和高度的分数表示的。”

代码语言:javascript
复制
rect = l,b,w,h
fig.add_axes(rect)
票数 1
EN

Stack Overflow用户

发布于 2014-04-15 19:35:51

要回答关于颜色条轴的问题,数字表示

代码语言:javascript
复制
[bottom_left_x_coord, bottom_left_y_coord, width, height]

合适的颜色条可能是

代码语言:javascript
复制
# x    y    w     h
[0.2, 0.1, 0.6, 0.05]

下面是您的代码,有些是重新处理的,它添加了一个色条:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

WIDTH = 9

def uniformity_calc(x):
    return x.mean()

def plotter(x, y, zs, name, units, efficiency=True):
    fig, axarr = plt.subplots(1, 3, figsize=(WIDTH, WIDTH/3), 
                              subplot_kw={'aspect':1})
    fig.suptitle(name)

    UI = map(uniformity_calc, zs)
    ranges = map(lambda x: int(np.max(x)-np.min(x)), zs)

    for ax, z, unif, rangenum in zip(axarr, zs, UI, ranges):
        scat = ax.scatter(x, y, c=z, s=100, cmap='rainbow')
        label = 'Uniformity: %i'%unif
        if not efficiency:
            label += '    %i ppm'%rangenum
        ax.set_xlabel(label)

    # Colorbar [left, bottom, width, height
    cax = fig.add_axes([0.2, 0.1, 0.6, 0.05])
    cbar = fig.colorbar(scat, cax, orientation='horizontal')
    cbar.set_label('This is a colorbar')
    plt.show()


def main():
    x, y = np.meshgrid(np.arange(10), np.arange(10))
    zs = [np.random.rand(*y.shape) for _ in range(3)]
    plotter(x.flatten(), y.flatten(), zs, 'name', None)

if __name__ == "__main__":
    main()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23091585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档