26

matplotlib を使用して python でいくつかのグラフィックをレンダリングしており、それらを LaTeX ペーパーに含めます (matplotlib などをいじる代わりに、LaTex の優れた表の配置を使用しますImageGrid)。を使用せずに、スタンドアロンのカラーバーを作成して保存したいと思います。savefigimshow

(vlim, vmaxパラメータ、および をcmap明示的に指定できます)

私が見つけた唯一の方法は非常に複雑で、(私が理解していることから)キャンバスにハードコーディングされた長方形を描画します: http://matplotlib.org/examples/api/colorbar_only.html

matplotlib でスタンドアロンのカラーバーを作成するエレガントな方法はありますか?

4

6 に答える 6

11

HYRYの回答と同じ考え方を使用して、図の項目から独立しているという意味で「スタンドアロン」のカラーバーが必要な場合(それらの色付けとは直接関係ありません)、次のようなことができます:

from matplotlib import pyplot as plt
import numpy as np

# create dummy invisible image
# (use the colormap you want to have on the colorbar)
img = plt.imshow(np.array([[0,1]]), cmap="Oranges")
img.set_visible(False)

plt.colorbar(orientation="vertical")

# add any other things you want to the figure.
plt.plot(np.random.rand(30))
于 2016-06-29T18:34:42.063 に答える
8

したがって、この回答 hereに基づいて、あなたが私のようで、このい偽の plt.imshow() を避けたい場合は、基本的に2行でこれを行うことができます:

import matplotlib as mpl
import matplotlib.pyplot as plt


fig, ax = plt.subplots()
col_map = plt.get_cmap('nipy_spectral')
mpl.colorbar.ColorbarBase(ax, cmap=col_map, orientation = 'vertical')

# As for a more fancy example, you can also give an axes by hand:
c_map_ax = fig.add_axes([0.2, 0.8, 0.6, 0.02])
c_map_ax.axes.get_xaxis().set_visible(False)
c_map_ax.axes.get_yaxis().set_visible(False)

# and create another colorbar with:
mpl.colorbar.ColorbarBase(c_map_ax, cmap=col_map, orientation = 'horizontal')

結果の図の写真

于 2017-10-13T14:17:26.543 に答える