Cadena de visualización de red doméstica

from pymongo import MongoClient
import matplotlib.pyplot as plt
import matplotlib
import re
import numpy as np
# 连接MongoD
client = MongoClient('localhost',27017)
db = client.get_database("zufang")
col = db.get_collection("nanning")

matchPipeline = [
    # 使用筛选管道只要“1室1厅1卫”和面积大于0小于100范围的集合信息
    {"$match":
        {
            "room_type": re.compile("1室1厅1卫"),
            "square": {"$gt": 0, "$lt": 100}
        }
    },
    # 再使用聚合管道获取小区名以及统计平均价格和最高价格
    {"$group":
        {
            "_id": "$area",
            "avgPrice": {"$avg": "$price"},
            "MaxPrice": {"$max": "$price"}
        }
    }
]
# 获取最终的结果
lists = col.aggregate(matchPipeline)
# 关闭MongoDB连接
client.close()
# 定义三个数组分开存放最终结果的数据
label_list = []
num_liat1 = []
num_list2 = []
# 使用循环把对应的数据转换成list类型存放到对应的数组中
for list in lists:
    label_list.append(list['_id'])
    num_liat1.append(np.round(list['avgPrice'], 1))
    num_list2.append(list['MaxPrice'])
print(label_list)

# 显示中文标签
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
# 获取平均价格的数组长度
x = range(len(num_liat1))
# 设置数据的显示方式 x:设置x轴坐标 num_liat1:设置高度 width:柱状的宽度 alpha:设置透明度 colr:颜色 lable:标签名
rects1 = plt.bar(x, num_liat1, width=0.4, alpha=0.8, color='blue', label="平均租房价格")
rects2 = plt.bar([i + 0.4 for i in x], num_list2, width=0.4, color='red', label="最高房价价格")
# 设置y轴坐标
plt.ylim(0, 10000)
# y轴的标题
plt.ylabel("价格")
# 设置x轴中区域坐标的间隔以及显示名称
plt.xticks([index + 0.2 for index in x], label_list)
# x轴的标题
plt.xlabel("区域")
# 柱状图的标题
plt.title("南宁地区租房价格")
# 显示设置lable的标签名
plt.legend()

# 循环遍历设置每一个柱状的数据标签
for rect in rects1:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height + 1, str(height), ha="center", va="bottom")
for rect in rects2:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height + 1, str(height), ha="center", va="bottom")
# 展示柱状图
plt.show()

El resultado final Figura:
Aquí Insertar imagen Descripción

Publicado 39 artículos originales · alabanza ganado 13 · vistas 2316

Supongo que te gusta

Origin blog.csdn.net/qq_43205282/article/details/103722235
Recomendado
Clasificación