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为数据
使用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()