写一个python代码读取我mysql80数据库中data表中的总价转化为整型和小区名称的数据从中选取总价最高的10个二手房y轴展示小区名称x轴展示总价总价越高的小区展示在越上方每条柱都染上不同颜色制成柱状图
以下是一种可能的实现方法:
import mysql.connector as mysql
import matplotlib.pyplot as plt
import numpy as np
# 连接MySQL数据库
db = mysql.connect(host="localhost", user="root", passwd="password", database="mydatabase")
cursor = db.cursor()
# 读取数据
query = "SELECT SUM(total_price), community_name FROM data GROUP BY community_name ORDER BY SUM(total_price) DESC LIMIT 10"
cursor.execute(query)
results = cursor.fetchall()
# 提取总价和小区名称
prices = [int(result[0]) for result in results]
communities = [result[1] for result in results]
# 生成颜色
colors = plt.cm.Set3(np.linspace(0, 1, len(prices)))
# 绘制柱状图
plt.barh(communities, prices, color=colors)
# 设置标题、标签和刻度
plt.title("Top 10 Community with Highest Total Prices")
plt.xlabel("Total Price (RMB)")
plt.ylabel("Community")
plt.xticks(rotation=45)
plt.yticks(fontsize=8)
# 显示图像
plt.show()
# 关闭连接
cursor.close()
db.close()
解释说明:
-
首先,我们使用
mysql.connector模块连接到MySQL数据库(请根据实际情况修改host、user、passwd和database参数)。 -
然后,我们使用SQL语句从
data表中选择总价之和和小区名称,并按照总价之和降序排列,最多返回前10行。这个查询结果是一个元组列表。 -
接着,我们使用列表推导式和
int()函数从查询结果中提取出总价,转化为整型。同样地,我们使用列表推导式提取出小区名称。 -
接下来,我们使用
plt.cm.Set3()函数生成颜色。这个函数会返回一个RGB颜色元组的列表,它们的数量等于len(prices),也就是我们要绘制的柱的数量。我们使用这些颜色来染色。 -
然后,我们使用
plt.barh()函数绘制水平柱状图。这个函数的第一个参数是y轴上的数据,也就是小区名称;第二个参数是x轴上的数据,也就是总价;第三个参数是柱的颜色。 -
接着,我们使用
plt.title()、plt.xlabel()、plt.ylabel()、plt.xticks()和plt.yticks()函数设置标题、标签和刻度。 -
最后,我们使用
plt.show()函数显示图像。 -
最后,我们关闭游标和数据库连接
原文地址: https://www.cveoy.top/t/topic/dVBN 著作权归作者所有。请勿转载和采集!