C RUBY-ON-RAILS MYSQL ASP.NET DEVELOPMENT RUBY .NET LINUX SQL-SERVER REGEX WINDOWS ALGORITHM ECLIPSE VISUAL-STUDIO STRING SVN PERFORMANCE APACHE-FLEX UNIT-TESTING SECURITY LINQ UNIX MATH EMAIL OOP LANGUAGE-AGNOSTIC VB6 MSBUILD

By : Ari.Levy
Date : November 21 2020, 11:01 PM
it helps some times In case someone is interested, the code of the ComplexRadar comes from here.
The ComplexRadar class uses many axes and makes all of them invisible, so the best way to create a legend here, would be to create a new axes to put the legend in. For that we need the handles of the plotted lines, so we need to change the ComplexRadar.plot() method to return the line. We then need to collect those lines in a list (call it lax) and supply them to the new legend.
code :
``````import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

def _scale_data(data, ranges):
"""scales data[1:] to ranges[0],
"""
for d, (y1, y2) in zip(data[1:], ranges[1:]):
assert (y1 <= d <= y2) or (y2 <= d <= y1)
x1, x2 = ranges[0]
d = data[0]
sdata = [d]
for d, (y1, y2) in zip(data[1:], ranges[1:]):
sdata.append((d-y1) / (y2-y1)
* (x2 - x1) + x1)
return sdata

def __init__(self, fig, variables, ranges,
n_ordinate_levels=6):
angles = np.arange(0, 360, 360./len(variables))

label = "axes{}".format(i))
for i in range(len(variables))]
l, text = axes[0].set_thetagrids(angles,
labels=variables)
[txt.set_rotation(angle-90) for txt, angle
in zip(text, angles)]
for ax in axes[1:]:
ax.patch.set_visible(False)
ax.grid("off")
ax.xaxis.set_visible(False)
for i, ax in enumerate(axes):
grid = np.linspace(*ranges[i],
num=n_ordinate_levels)
gridlabel = ["{}".format(round(x,2))
for x in grid]
if ranges[i][0] > ranges[i][1]:
grid = grid[::-1] # hack to invert grid
# gridlabels aren't reversed
gridlabel[0] = "" # clean up origin
ax.set_rgrids(grid, labels=gridlabel,
angle=angles[i])
#ax.spines["polar"].set_visible(False)
ax.set_ylim(*ranges[i])
# variables for plotting
self.ranges = ranges
self.ax = axes[0]

def plot(self, data, *args, **kw):
sdata = _scale_data(data, self.ranges)
l = self.ax.plot(self.angle, np.r_[sdata, sdata[0]], *args, **kw)
return l

def fill(self, data, *args, **kw):
sdata = _scale_data(data, self.ranges)
self.ax.fill(self.angle, np.r_[sdata, sdata[0]], *args, **kw)

index = ["Carl","Michael","Peter","Louis","Sarah", "Laura","Nicholas"]
df = pd.DataFrame({
"Spe": pd.Series([89, 83, 70, 60, 30, 49, 28]),
"Str": pd.Series([69, 53, 30, 20, 10, 29, 48]),
"Det": pd.Series([82, 44, 79, 39, 20, 10, 85]),
"Extr": pd.Series([59, 74, 29, 36, 18, 29, 18]),
"Int": pd.Series([63, 11, 20, 36, 97, 58, 91]),
"Est": pd.Series([12, 69, 89, 59, 19, 58, 98]),
"Ape": pd.Series([29, 13, 94, 30, 20, 10, 67]),
})

variables = [k[0] for k in df.iteritems()]

ranges = [(1.,100.),(1.,100.),(1.,100.),(1.,100.),(1.,100.),(1.,100.),(1.,100.)]
fig1 = plt.figure(figsize=(8, 8))
lax = []
for i, name  in enumerate(index):
data=df.iloc[i].values
lax.append(l)

legendax.legend(handles = lax, labels=index, loc=3, bbox_to_anchor=(0,0,1,1), bbox_transform=fig1.transFigure )

legendax.axis('off')
sns.plt.show()
``````

Share :

By : Chasing Rainbows inc
Date : March 29 2020, 07:55 AM
I wish did fix the issue. Here's a generic legend to get you started. You can alter it to suit your particular needs:
code :
``````legend(-2,0,
legend=c("V1","V2"),
pch=c(15,16),
col=c("blue","red"),
lty=c(1,2))
``````

## Adding legend entry makes all other legend entries diagonal and rectangles

By : nurisa unindra
Date : March 29 2020, 07:55 AM
it helps some times One way to remove lines from the colour and size legends is to set linetype=0 inside override.aes= for colour= and size=
code :
`````` + guides(colour = guide_legend(override.aes = list(size=6,linetype=0)),
size = guide_legend(override.aes=list(linetype=0)))
``````

## Adding legend to scatter plot in Python

By : Michael AMA
Date : March 29 2020, 07:55 AM
seems to work fine The idea is to divide data set on separate data sets which are represented by the same color. After that the legend displayed properly.
code :
``````import matplotlib.pyplot as plt
import matplotlib
import numpy as np

data = np.zeros(shape=(10,2))
data[:,0] = np.linspace(0,1,10)
data[:,1] = np.linspace(0,1,10)

y = ['red', 'green', 'blue']
f, ax1 = plt.subplots(3,2)
cmap = matplotlib.cm.get_cmap('coolwarm')
ny = len(y)
for i, itm in enumerate(y):
datac = data[i::ny,:]
ax1[0,1].scatter(datac[:,0], datac[:,1], c=itm,
s=20, marker='o', alpha=.5, cmap=cmap)

ax1[0,1].legend(['label1', 'label2', 'label3'],
scatterpoints=1,
loc='lower left',
fontsize=10)
plt.show()
``````

## Legend label is not adding for multiple plots in python

By : Deathstreams
Date : March 29 2020, 07:55 AM
wish of those help Set lebel argument when plot and use handle to make a legend. Try to write like this:
code :
``````def runplot(df, title, label):
rows, cols = df.shape

fig, ax = plt.subplots()
line1, = ax.plot(df['price'].values, df['cost'].values, label=label)
ax.legend(handles=[line1])

plt.title(title)
plt.annotate('test!',
xy=(rows, df.ix[rows-1,'cost']),
xycoords='data',
xytext=(-30,30),
textcoords='offset points',
arrowprops=dict(arrowstyle="->"))
``````

## error of adding a legend for a plot in Python 3.2 Matplotlib

By : ron gerard valero
Date : March 29 2020, 07:55 AM
fixed the issue. Will look into that further I need to add a legend for a plot in Python 3.2 Matplotlib. , Here's what should work