Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中

文章目录

  • 1.散点图
    • 1.1散点子图
    • 1.2 折线图
  • 2.绘制雷达图
  • 3.绘制网络图

1.散点图

# 代码 3-5
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('D:/软件(学习)/Python/数据分析与挖掘/chapter3/data/国民经济核算季度数据.npz')
data = np.load('./data/国民经济核算季度数据.npz')
name = data['columns'] ## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置\
print(data['columns'])
print(data['values'])
plt.figure(figsize=(8,7))## 设置画布
plt.scatter(values[:,0],values[:,2], marker='o')## 绘制散点图
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年季度生产总值散点图')## 添加图表标题
plt.savefig('./tmp/2000-2017年季度生产总值散点图.png')
plt.show()

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第1张图片

# 代码 3-6
plt.figure(figsize=(8,7))## 设置画布
## 绘制散点1
plt.scatter(values[:,0],values[:,3], marker='o',c='red')
## 绘制散点2
plt.scatter(values[:,0],values[:,4], marker='D',c='blue')
## 绘制散点3
plt.scatter(values[:,0],values[:,5], marker='v',c='yellow')
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#x轴刻度
plt.title('2000-2017年各产业季度生产总值散点图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例
plt.savefig('./tmp/2000-2017年各产业季度生产总值散点图.png')
plt.show

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第2张图片

1.1散点子图

# 代码 3-10
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('./data/国民经济核算季度数据.npz')
name = data['columns']## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置
print(name)
print(values)
p = plt.figure(figsize=(12,12)) ##设置画布

## 子图1
ax1 = p.add_subplot(2,1,1)
plt.scatter(values[:,0],values[:,3], marker='o',c='r')## 绘制散点
plt.scatter(values[:,0],values[:,4], marker='D',c='b')## 绘制散点
plt.scatter(values[:,0],values[:,5], marker='v',c='y')## 绘制散点
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.title('2000-2017年各产业季度生产总值散点图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例

## 子图2
ax2 = p.add_subplot(2,1,2)
plt.scatter(values[:,0],values[:,6], marker='o',c='r')## 绘制散点
plt.scatter(values[:,0],values[:,7], marker='D',c='b')## 绘制散点
plt.scatter(values[:,0],values[:,8], marker='v',c='y')## 绘制散点
plt.scatter(values[:,0],values[:,9], marker='8',c='g')## 绘制散点
plt.scatter(values[:,0],values[:,10], marker='p',c='c')## 绘制散点
plt.scatter(values[:,0],values[:,11], marker='+',c='m')## 绘制散点
plt.scatter(values[:,0],values[:,12], marker='s',c='k')## 绘制散点
## 绘制散点
plt.scatter(values[:,0],values[:,13], marker='*',c='purple')
## 绘制散点
plt.scatter(values[:,0],values[:,14], marker='d',c='brown')
plt.legend(['农业','工业','建筑','批发','交通''餐饮','金融','房地产','其他'])
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig('./tmp/2000-2017年季度各行业生产总值散点子图.png')
plt.show()

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第3张图片

1.2 折线图

# 代码 3-11
p1 = plt.figure(figsize=(8,7))## 设置画布
## 子图1
ax3 = p1.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3],'b-',
        values[:,0],values[:,4],'r-.',
        values[:,0],values[:,5],'g--')## 绘制折线图
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.title('2000-2017年各产业季度生产总值折线图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例
## 子图2
ax4 = p1.add_subplot(2,1,2)
plt.plot(values[:,0],values[:,6], 'r-',## 绘制折线图
        values[:,0],values[:,7], 'b-.',## 绘制折线图
        values[:,0],values[:,8],'y--',## 绘制折线图
        values[:,0],values[:,9], 'g:',## 绘制折线图
        values[:,0],values[:,10], 'c-',## 绘制折线图
        values[:,0],values[:,11], 'm-.',## 绘制折线图
        values[:,0],values[:,12], 'k--',## 绘制折线图
        values[:,0],values[:,13], 'r:',## 绘制折线图
        values[:,0],values[:,14], 'b-')## 绘制折线图
plt.legend(['农业','工业','建筑','批发','交通','餐饮','金融','房地产','其他'])
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig('./tmp/2000-2017年季度各行业生产总值折线子图.png')
plt.show()

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第4张图片

2.绘制雷达图

from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
import networkx as nx 
# 读取数据
data = pd.read_csv('../data/basalt.csv')
data.drop(['SAMPLE NAME'],axis=1,inplace=True)
association = data.corr()##3#相关系数矩阵,即给出了任意两个变量之间的相关系数
print(association.head())
# 数据预处理
# 筛选出相似的属性
delSimCol = []
colNum = association.shape[0]###列
print(association.shape[1])
print(colNum)
names = association.columns
for i in range(colNum):
    for j in range(i+1,colNum):
        if association.iloc[i,j]>0.9:
            delSimCol.append((names[i],names[j]))
print('经过筛选得到的相似的属性为:\n',delSimCol)  
delCol = [i[1] for i in delSimCol] 
data.drop(delCol,axis=1,inplace = True) # 删除列
dummiesData = pd.get_dummies(data['LAND OR SEA']) # 哑变量处理
data.drop('LAND OR SEA',axis=1,inplace=True)
modelData = pd.concat([data,dummiesData],axis=1)
print(modelData.head())
x = modelData.iloc[:,1:]
X = StandardScaler().fit_transform(x)
##绘制雷达图
kmeans = KMeans(n_clusters=9, random_state=123).fit(X)
label = kmeans.labels_
data['cluster_label'] = label
# data.to_csv('./tmp/聚类结果.csv',index=False)
center = kmeans.cluster_centers_
print(center)
"""
[[ 3.01394339e-01  3.77932899e-02 -2.91325479e-01  1.20767966e+00
  -4.63829542e-01  6.58018299e-01 -6.13195636e-01 -9.25273927e-01
   8.63072849e-01 -5.17216881e-02  2.13743538e-01  4.08246540e-01
   1.30722115e+00 -7.73895028e-01  4.72779419e-01  1.09019584e+00
   1.05394802e-01  9.85105865e-01 -8.42178313e-01 -8.66054541e-02
   1.75031992e-03 -1.94407301e-01  1.39689179e+00  7.14784675e-01
   1.29980752e-01  1.82365644e-01  2.64225413e-01  4.31673918e-01
   3.27667812e-01 -3.27667812e-01]
 [ 2.30305888e-01  1.94698268e-01 -2.13892455e-01  8.96370367e-01
"""
fig = plt.figure(figsize=(15,15))
ax = fig.add_subplot(111, polar=True)# polar参数
angles = np.linspace(0, 2*np.pi, 31, endpoint=True)
print(angles)
names = x.columns
for i in range(9):
    Data = np.concatenate((center[i], [center[i][0]])) # 闭合
    ax.plot(angles,Data, linewidth=2)# 画线
    ax.fill(angles, Data, alpha=0.25)# 填充    
ax.set_thetagrids(angles * 180/np.pi, names)
ax.set_title("聚类结果雷达图", va='bottom')## 设定标题
ax.set_rlim(-1,2.5)## 设置各指标的最终范围
ax.legend(range(9),loc=0)
ax.grid(True)
plt.savefig('../tmp/聚类结果雷达图.png')

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第5张图片

3.绘制网络图

# 绘制网络图
header = data.iloc[:,0]
tailer = label
G = nx.Graph()
for i in range(data.shape[0]):
    head,tail = header[i],tailer[i]
    G.add_edge(head,tail)
klist = list(nx.algorithms.community.k_clique_communities(G,2))
plt.figure(figsize=(15,15)) #创建一幅图
nx.draw(G, node_color='red',nodelist = klist[0], with_labels=True, node_size=800)
plt.savefig('../tmp/社区发现.png')
plt.show()

Python数据分析与应用 第三章 Matplotlib数据可视化基础 (散点图,雷达图,网络图) 中_第6张图片

你可能感兴趣的:(数据分析与数据挖掘)