Pythonmatplotlib散布図

注:このブログで使用されているデータについてcnboo1.xlsx

コードクラウドに配置しました。必要に応じて移動してください:cnboo1.xlsx

1.データを整理します

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.ポイントのスタイルを変更します

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.半透明の状態を提示する

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()

データがより集中している場合、ドットの色はより暗くなり、データ分布がまばらである場合、ドットはより透明になることに注意してください。
ここに画像の説明を挿入

第四に、ドットはカラフルな色を示します

私は合計50セット、つまり50ポイントを持っているので、色を作成するときは50セットでなければなりません。
ここに画像の説明を挿入

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.ドットのサイズを変えましょう

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()

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
これは、numpy配列を使用して実現することもできます。

sizes=list(np.random.randint(100,500,size=(50,)))

ここに画像の説明を挿入

ポイントを同じ色に戻したい場合は、次のようにします。

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.側面のカラーカード

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.濃度を変更します

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()

横軸が変わっていることがわかります。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/wxfighting/article/details/123338545