以下では、スキャッターとオウンを使用して、ListedColormap
いくつかの色付きのデータポイントをプロットします。さらに、対応するcolorbar
ものもプロットされます。
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, ListedColormap, BoundaryNorm
from numpy import arange
fig, ax = plt.subplots()
my_cm = ListedColormap(['#a71b1b','#94258f','#ea99e6','#ec9510','#ece43b','#a3f8ff','#2586df','#035e0d'])
bounds=range(8)
norm = BoundaryNorm(bounds, my_cm.N)
data = [1,2,1,3,0,5,3,4]
ret = ax.scatter(range(my_cm.N), [1]*my_cm.N, c=data, edgecolors='face', cmap=my_cm, s=50)
cbar = fig.colorbar(ret, ax=ax, boundaries=arange(-0.5,8,1), ticks=bounds, norm=norm)
cbar.ax.tick_params(axis='both', which='both',length=0)
私のデータが境界間隔の各値をカバーしていない場合、はcolorbar
すべての色を表示しません(追加された図のように)。場合data
に設定されるだろうrange(8)
、私は、各色のドットを取得し、colorbar
また、すべての色を示しています。
すべての境界値が含まれていないcolorbar
場合でも、定義されたすべての色を強制的に表示するにdata
はどうすればよいですか?
他の何かを探しているとき、私はその問題に対する別の解決策を見つけました:colorbar-for-matplotlib-plot-surface-command。その場合、私は設定する必要はありませんvmin
し、vmax
プロットにポイントの配列/リストが空の場合、それはまた、例に取り組んでいます。代わりに、インスタンスの代わりにaScalarMappable
が定義され、提供されます。colorbar
scatter
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, ListedColormap, BoundaryNorm
import matplotlib.cm as cm
from numpy import arange
fig, ax = plt.subplots()
my_cm = ListedColormap(['#a71b1b','#94258f','#ea99e6','#ec9510','#ece43b','#a3f8ff','#2586df','#035e0d'])
bounds=range(8)
norm = BoundaryNorm(bounds, my_cm.N)
mappable = cm.ScalarMappable(cmap=my_cm)
mappable.set_array(bounds)
data = [] # also x and y can be []
ax.scatter(x=range(my_cm.N), y=[1]*my_cm.N, c=data, edgecolors='face', cmap=my_cm, s=50)
cbar = fig.colorbar(mappable, ax=ax, boundaries=arange(-0.5,8,1), ticks=bounds, norm=norm)
cbar.ax.tick_params(axis='both', which='both',length=0)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加