У меня есть проблемы, чтобы показывать legend в scatter.
Данные, использованные для примера
import pandas as pd
import numpy as np
import scipy.stats
import matplotlib
import matplotlib.pyplot as pp
import re
import mailbox
import csv
from IPython import display
from ipywidgets import interact, widgets
%matplotlib inline
datos = pd.read_csv('https://raw.githubusercontent.com/theengineeringworld/statistics-using-python/master/gapminder.xls')
datosDos = datos.dropna()
datosDos.reset_index(drop=True, inplace=True)
Я использую следующую функцию:
def plotyearDinamico(anio):
data = datosDos[datosDos.year == anio]
area = 10e-6 * datosDos.population
color = data.region.map({'Africa': 'skyblue', 'Europe' : 'gold',
'America' : 'palegreen', 'Asia' : 'coral'})
data.plot.scatter('babies_per_woman', 'age5_surviving', s = area, c =
color, linewidth = 1, edgecolors = 'k', figsize=(9,6))
pp.axis(ymin = 50, ymax = 105, xmin = 0, xmax = 8)
pp.xlabel('babies_per_woman')
pp.ylabel('age5_surviving')
Потом звоня в эту функцию я вижу следующий график:
interact(plotyearDinamico, anio=widgets.IntSlider(min=1950, max=2015,
step=1, value= 1950))
Который является legend (), но я не нахожу, как помещение этого в этот график.
Шрифт: Пример, в котором я нуждаюсь
Как я могу делать, чтобы показывать имена континентов, так как я только считаю их дифференцированными цветами? Немного более или менее так:
import matplotlib.pyplot as plt
from numpy.random import rand
fig, ax = plt.subplots()
for color in ['red', 'green', 'blue']:
n = 750
x, y = rand(2, n)
scale = 200.0 * rand(n)
ax.scatter(x, y, c=color, s=scale, label=color,
alpha=0.3, edgecolors='none')
ax.legend()
ax.grid(True)
plt.show()
Если я добавляю в мой график pp.legend (data.region), покажи следующее (Площадь и цвет согласовываются, но только принеси один)
Несколько изменений в тебя cГіdigo:
def plotyearDinamico(anio):
data = datosDos[datosDos.year == anio]
colores = {'Africa': 'skyblue', 'Europe' : 'gold',
'America' : 'palegreen', 'Asia' : 'coral'}
pp.rcParams['figure.figsize'] = [12, 8] # Config. tamaño de gráfica
fig, ax = pp.subplots()
for region, color in colores.items():
# Subgráficas por region
data_region = data[data.region == region]
area = 10e-6 * data_region.population
paises_colors = data_region.region.map(colores)
ax.scatter(x=data_region.babies_per_woman,
y=data_region.age5_surviving,
c=color,
s=area,
label=region,
linewidth = 1,
alpha=0.7,
edgecolors='k')
pp.axis(ymin = 50, ymax = 105, xmin = 0, xmax = 8)
pp.xlabel('babies_per_woman')
pp.ylabel('age5_surviving')
# Configuración del tamaño de las leyendas
lgnd = pp.legend(loc="lower left", scatterpoints=1, fontsize=10)
for handle in lgnd.legendHandles:
handle.set_sizes([50.0])
pp.grid(True)
data_region = data[data.region == region]
scatter
из matplotlib
а следовательно мы будем должны конфигурировать соответствующим образом их parГЎmetros x
и y
, посредством: x=data_region.babies_per_woman, y=data_region.age5_surviving
alpha=0.7
, чтобы мочь оценивать наложения (немного по крайней мере) label=region
, region
в этом случае - цепь с именем той же самой.