Matplotlib-散点图详解

✏️首先,导入数据
✏️该图展示两个变量之间的关系,matplotlib中使用plt.scatter()函数,当数据包含多组时,可以用不同的颜色区分,如果只有三四个类别,或许我们还可以自己写,然而面对十几个,或者二十个分类,我们需要让matplotlib来帮助我们自动生成颜色。
📙range函数: 左闭右开:

在这里插入图片描述

📙np.unique 去除重复的数字并将其升序输出,出来是一个数组
📙plt.cm.Set1函数:颜色可用元组表示,元组由4个元素组成,每个元素范围在[0,1]之间;
比如(1, 0.1, 0.2, 0.3)就是一种颜色,(0.8, 0.8, 0.1, 1)是另外一种颜色
📙plt.scatter函数:plt.scatter(x,y,c= ‘颜色可选’,marker= ‘点的样式’, cmap= ‘颜色变化’,alpha=“透明度”, linewidths=“线宽”,s= ‘点的大小’),x,y为数据
📙补充:如果要显示多种颜色的图,并且这个颜色代表标签y的分类,如何让散点图显示分别代表不同颜色的分类?

使用for循环,循环的东西有2个,一个是颜色,一个是标签。循环特征的数目次。

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings(action='once')
plt.style.use('seaborn-bright')
sns.set_style("whitegrid")


"该图展示两个变量之间的关系,matplotlib中使用plt.scatter()函数,当数据包含多组时,可以用不同的颜色区分,"
"如果只有三四个类别,或许我们还可以自己写"
"然而面对十几个,或者二十个分类,我们需要让matplotlib来帮助我们自动生成颜色"

# 读取数据
midwest = pd.read_csv(r'E:\公众号可视化数据集\datasets\midwest_filter.csv')
# Create as many colors as there are unique midwest['category']

#np.unique 去除重复的数字并将其升序输出,出来是一个数组
categories = np.unique(midwest['category'])
print(categories)
print(len(categories))

colors = [
    plt.cm.Set1(i / float(len(categories) - 1)) for i in range(len(categories))
]
print(colors)

# Draw Plot for Each Category
plt.figure(figsize=(10, 6), dpi=100, facecolor='w', edgecolor='k')
for i, category in enumerate(categories):
    plt.scatter('area',
                'poptotal',
                data=midwest.loc[midwest.category == category, :],
                s=20,
                c=colors[i],
                label=str(category))

# Decorations
plt.gca().set(
    xlim=(0.0, 0.1),
    ylim=(0, 90000),
)

plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.xlabel('Area', fontdict={'fontsize': 10})
plt.ylabel('Population', fontdict={'fontsize': 10})
plt.title("Scatterplot of Midwest Area vs Population", fontsize=12)
plt.legend(fontsize=10)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值