Nota: Respecto a los datos utilizados en este blogcnboo1.xlsx
Lo puse en mi nube de código, muévase si lo necesita: cnboo1.xlsx
Directorio de artículos
1. Organizar los datos
import pandas as pd
cnbodf=pd.read_excel('cnboo1.xlsx')
cnbodfsort=cnbodf.sort_values(by=['BO'],ascending=False)
def mkpoints(x,y):
return len(str(x))*(y/25)-3
cnbodfsort['points']=cnbodfsort.apply(lambda x:mkpoints(x.BO,x.PERSONS),axis=1)
cnbodfgb=cnbodfsort.groupby("TYPE").mean(["bo","prices","persons","points"])
cnbodfsort['type1']=cnbodfsort['TYPE'].apply(lambda x:x.split("/")[0])
cnbodfgb=cnbodfsort.groupby(["type1"])["ID","BO","PRICE","PERSONS","points"].mean()
cnbodfgbsort=cnbodfgb.sort_values("BO",ascending=False)
cnbodfsort.sort_values(by='PERSONS') # 根据电影人数进行排序
from matplotlib import pyplot as plt
plt.style.use('classic') # 画板主题风格
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况") # 标题
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE) # 散点图
plt.grid() # 网格线
plt.show()
2. Modificar el estilo del punto
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c='red',edgecolor='pink',s=100,linewidth=4)
plt.grid()
plt.show()
3. Presentar un estado semitransparente
alpha=0.3
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c='red',edgecolor='black',s=100,linewidth=4,alpha=0.5)
plt.grid()
plt.show()
Observe que cuando los datos están más concentrados, el color de los puntos es más oscuro y si la distribución de datos es escasa, los puntos son más transparentes.
Cuarto, los puntos presentan colores coloridos.
Como tengo un total de cincuenta conjuntos de datos, es decir, 50 puntos, debe haber cincuenta al construir los colores.
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c=colors,edgecolor='black',s=100,linewidth=4,alpha=0.5)
plt.grid()
plt.show()
5. Deja que varíe el tamaño de los puntos
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
sizes=cnbodfsort.points*10
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c=colors,edgecolor='black',s=sizes,linewidth=4,alpha=0.5)
plt.grid()
plt.show()
También se puede lograr mediante el uso de matrices numpy:
sizes=list(np.random.randint(100,500,size=(50,)))
Si desea que los puntos vuelvan al mismo color, haga lo siguiente:
cmap='summer'
import numpy as np
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
sizes=list(np.random.randint(100,500,size=(50,)))
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,cmap='summer',edgecolor='black',s=sizes,linewidth=4,alpha=0.5)
cbar=plt.colorbar()
cbar.set_label("票房")
plt.xscale('log')
plt.xscale('log')
plt.grid()
plt.show()
import numpy as np
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
sizes=list(np.random.randint(100,500,size=(50,)))
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,cmap='winter',c=cnbodfsort.PERSONS,edgecolor='black',s=sizes,linewidth=4,alpha=0.5)
cbar=plt.colorbar()
cbar.set_label("票房")
plt.xscale('log')
plt.xscale('log')
plt.grid()
plt.show()
6. Tarjeta de color en el lateral.
cbar=plt.colorbar()
import numpy as np
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
sizes=list(np.random.randint(100,500,size=(50,)))
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c=colors,edgecolor='black',s=sizes,linewidth=4,alpha=0.5)
cbar=plt.colorbar()
cbar.set_label("票房")
plt.grid()
plt.show()
7. Cambia la concentración
plt.xscale('log')
plt.xscale('log')
import numpy as np
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(9,6))
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.title("中国票房分布情况")
colors=[1,2,3,4,5,6,7,8,9,10]*5
sizes=list(np.random.randint(100,500,size=(50,)))
plt.scatter(cnbodfsort.PERSONS,cnbodfsort.PRICE,c=colors,edgecolor='black',s=sizes,linewidth=4,alpha=0.5)
cbar=plt.colorbar()
cbar.set_label("票房")
plt.xscale('log')
plt.xscale('log')
plt.grid()
plt.show()
Puede ver que el eje de abscisas ha cambiado.