您的位置:首页 > 编程语言 > Python开发

基于【matplotlib】【imshow】【cmap】绘制【numpy.ndarray】二维数组的“二维码”

2016-12-01 11:21 976 查看
基于 matplotlib 画 numpy.ndarray 二维数组的二维图/灰度图:

全文参考:http://matplotlib.org/examples/color/colormaps_reference.html

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

train_data_source = pd.read_csv('df_recon_train', header=0, encoding='utf-8')
train_data = train_data_source.drop(['uid', 'y'], axis=1)

#以train_data的第一行数据为例,画二维数组的二维图
row_ins = train_data[0:1].values[0]

row_ins_rect = row_ins[::-1].reshape(45, 46)

fig = plt.figure()
ax1 = fig.add_subplot(1,2,1)
ax1.imshow(row_ins_rect, cmap=plt.cm.gray_r)
ax2 = fig.add_subplot(1,2,2)
ax2.imshow(row_ins_rect, cmap=plt.cm.hot_r)
plt.show()




implot = plt.imshow(row_ins_rect, cmap="summer")#选一个漂亮的颜色
plt.show()




import numpy as np
import matplotlib.pyplot as plt

# Have colormaps separated into categories:
# http://matplotlib.org/examples/color/colormaps_reference.html 
cmaps = [('Perceptually Uniform Sequential',
['viridis', 'inferno', 'plasma', 'magma']),
('Sequential',     ['Blues', 'BuGn', 'BuPu',
'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd',
'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu',
'Reds', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd']),
('Sequential (2)', ['afmhot', 'autumn', 'bone', 'cool',
'copper', 'gist_heat', 'gray', 'hot',
'pink', 'spring', 'summer', 'winter']),
('Diverging',      ['BrBG', 'bwr', 'coolwarm', 'PiYG', 'PRGn', 'PuOr',
'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral',
'seismic']),
('Qualitative',    ['Accent', 'Dark2', 'Paired', 'Pastel1',
'Pastel2', 'Set1', 'Set2', 'Set3']),
('Miscellaneous',  ['gist_earth', 'terrain', 'ocean', 'gist_stern',
'brg', 'CMRmap', 'cubehelix',
'gnuplot', 'gnuplot2', 'gist_ncar',
'nipy_spectral', 'jet', 'rainbow',
'gist_rainbow', 'hsv', 'flag', 'prism'])]

nrows = max(len(cmap_list) for cmap_category, cmap_list in cmaps)
gradient = np.linspace(0, 1, 256)
gradient = np.vstack((gradient, gradient))

def plot_color_gradients(cmap_category, cmap_list):
fig, axes = plt.subplots(nrows=nrows)
fig.subplots_adjust(top=0.95, bottom=0.01, left=0.2, right=0.99)
axes[0].set_title(cmap_category + ' colormaps', fontsize=14)

for ax, name in zip(axes, cmap_list):
ax.imshow(gradient, aspect='auto', cmap=plt.get_cmap(name))
pos = list(ax.get_position().bounds)
x_text = pos[0] - 0.01
y_text = pos[1] + pos[3]/2.
fig.text(x_text, y_text, name, va='center', ha='right', fontsize=10)

# Turn off *all* ticks & spines, not just the ones with colormaps.
for ax in axes:
ax.set_axis_off()

for cmap_category, cmap_list in cmaps:
plot_color_gradients(cmap_category, cmap_list)

plt.show()










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: