1.散点图
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']
values = data['values']
print(data['columns'])
print(data['values'])
plt.figure(figsize=(8,7))
plt.scatter(values[:,0],values[:,2], marker='o')
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
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()
plt.figure(figsize=(8,7))
plt.scatter(values[:,0],values[:,3], marker='o',c='red')
plt.scatter(values[:,0],values[:,4], marker='D',c='blue')
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)
plt.title('2000-2017年各产业季度生产总值散点图')
plt.legend(['第一产业','第二产业','第三产业'])
plt.savefig('./tmp/2000-2017年各产业季度生产总值散点图.png')
plt.show
1.1散点子图
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']
values = data['values']
print(name)
print(values)
p = plt.figure(figsize=(12,12))
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(['第一产业','第二产业','第三产业'])
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()
1.2 折线图
p1 = plt.figure(figsize=(8,7))
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(['第一产业','第二产业','第三产业'])
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()
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()
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
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)
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')
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()