用数据库保存某公司在郑州和洛阳两地2021和2022年的5种不同品牌手机的累计销售额,利用pyecharts选择合适可视化图进行展示,要求能够利用工具框切换为其他不同类型图表,画布上方居中有本人学号姓名等信息。
时间: 2023-06-16 15:04:44 浏览: 41
以下是一个简单的示例代码,使用Pyecharts中的Bar和Line图表展示了某公司在郑州和洛阳两地2021和2022年的5种不同品牌手机的累计销售额。
```python
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test')
cursor = conn.cursor()
# 查询数据
sql = "SELECT * FROM sales"
cursor.execute(sql)
results = cursor.fetchall()
# 整理数据
cities = ['郑州', '洛阳']
brands = ['品牌1', '品牌2', '品牌3', '品牌4', '品牌5']
data_2021 = [[0 for j in range(5)] for i in range(2)]
data_2022 = [[0 for j in range(5)] for i in range(2)]
for result in results:
city = cities.index(result[0])
brand = brands.index(result[1])
year = int(result[2])
sales = result[3]
if year == 2021:
data_2021[city][brand] = sales
elif year == 2022:
data_2022[city][brand] = sales
# 关闭数据库连接
cursor.close()
conn.close()
# 绘制图表
def create_bar() -> Bar:
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(brands)
.add_yaxis("郑州", data_2021[0], stack="stack1")
.add_yaxis("洛阳", data_2021[1], stack="stack1")
.add_yaxis("郑州", data_2022[0], stack="stack2")
.add_yaxis("洛阳", data_2022[1], stack="stack2")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="手机销售额", subtitle="2021-2022"),
legend_opts=opts.LegendOpts(pos_left="center", pos_top="bottom"),
toolbox_opts=opts.ToolboxOpts(),
)
)
return bar
def create_line() -> Line:
line = (
Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(brands)
.add_yaxis("郑州", data_2021[0])
.add_yaxis("洛阳", data_2021[1])
.add_yaxis("郑州", data_2022[0])
.add_yaxis("洛阳", data_2022[1])
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="手机销售额", subtitle="2021-2022"),
legend_opts=opts.LegendOpts(pos_left="center", pos_top="bottom"),
toolbox_opts=opts.ToolboxOpts(),
)
)
return line
bar = create_bar()
line = create_line()
bar.render("bar.html")
line.render("line.html")
```
在上面的代码中,我们使用了Pyecharts中的Bar和Line图表来分别展示某公司在郑州和洛阳两地2021和2022年的5种不同品牌手机的累计销售额。我们首先连接数据库,查询数据并整理数据,然后使用Pyecharts绘制图表,并将图表保存到本地文件中。我们还为工具框添加了切换按钮,可以在Bar和Line图表之间进行切换。
在绘制图表时,我们使用了Bar和Line两个函数来分别创建Bar和Line图表。在创建图表时,我们首先设置了全局配置(标题、图例、工具框等),然后添加了x轴和y轴的数据,并使用add_yaxis()方法添加了不同城市和不同年份的销售额数据。最后,我们将图表保存到了本地文件中。
在绘制图表的过程中,我们还为每个图表设置了不同的stack属性,以将不同城市和不同年份的数据叠加在一起展示。