我很難將圖例添加到matplotlib.pyplot,我的目標(biāo)是使平行坐標(biāo)圖類似于那個由于我的用例類似,我使用了提供的解決方案,除了我只有 2 個觀察值,每組 1 個并且我添加了 plt.legend(axes,style),以便創(chuàng)建圖例,但是當(dāng)我運行代碼時,我收到以下警告并且沒有傳奇。:\Python27\lib\site-packages\matplotlib\legend.py:634: UserWarning: Legend 不支持實例??梢允褂么硭囆g(shù)家來代替。請參閱:http : //matplotlib.org/users/legend_guide.html#using-proxy-artist "#using-proxy-artist".format(orig_handle)我試圖通過文檔但找不到解決方案。我發(fā)現(xiàn)下面列出的另一個stackoverflow帖子,但仍然不太清楚圖例的使用,特別是在傳遞給圖例函數(shù)之前如何解包子圖。任何人都可以請解釋它是如何工作的。#!/usr/bin/pythonimport matplotlib.pyplot as pltimport matplotlib.ticker as tickerdef parallel_coordinates(data_sets, style=None): dims = len(data_sets[0]) x = range(dims) fig, axes = plt.subplots(1, dims-1, sharey=False) if style is None: style = ['r-']*len(data_sets) # Calculate the limits on the data min_max_range = list() for m in zip(*data_sets): mn = min(m) mx = max(m) if mn == mx: mn -= 0.5 mx = mn + 1. r = float(mx - mn) min_max_range.append((mn, mx, r)) # Normalize the data sets norm_data_sets = list() for ds in data_sets: nds = [(value - min_max_range[dimension][0]) / min_max_range[dimension][2] for dimension,value in enumerate(ds)] norm_data_sets.append(nds) data_sets = norm_data_sets # Plot the datasets on all the subplots for i, ax in enumerate(axes): for dsi, d in enumerate(data_sets): ax.plot(x, d, style[dsi]) ax.set_xlim([x[i], x[i+1]]) # Set the x axis ticks for dimension, (axx,xx) in enumerate(zip(axes, x[:-1])): axx.xaxis.set_major_locator(ticker.FixedLocator([xx])) ticks = len(axx.get_yticklabels()) labels = list() step = min_max_range[dimension][2] / (ticks - 1) mn = min_max_range[dimension][0] for i in xrange(ticks): v = mn + i*step labels.append('%4.2f' % v) axx.set_yticklabels(labels)
添加回答
舉報
0/150
提交
取消