From 0fea54b553367e304c81735731d14c5d37273329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=AE=E4=BC=9F=E7=81=BF?= <2509165045@student.example.com> Date: Mon, 6 Jul 2026 17:13:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- q4_1.py | 26 ++++++++++++++++++++++++++ q4_1_bar.png | Bin 0 -> 19138 bytes 2 files changed, 26 insertions(+) create mode 100644 q4_1.py create mode 100644 q4_1_bar.png diff --git a/q4_1.py b/q4_1.py new file mode 100644 index 0000000..67a3349 --- /dev/null +++ b/q4_1.py @@ -0,0 +1,26 @@ + +import json +import matplotlib.pyplot as plt + +with open("books.json", "r", encoding="utf-8") as f: + data = json.load(f) +books = data["books"] +pub_count = {} +for book in books: + pub_name = book["publisher"] + if pub_name in pub_count: + pub_count[pub_name] += 1 + else: + pub_count[pub_name] = 1 +publish_names = list(pub_count.keys()) +book_nums = list(pub_count.values()) +plt.figure(figsize=(10, 6)) +plt.bar(pub_count.keys(), pub_count.values()) +plt.title("出版社图书数量分布", fontsize=14) +plt.xlabel("出版社名称", fontsize=12) +plt.ylabel("图书数量", fontsize=12) +plt.xticks(rotation=45, ha="right") +plt.tight_layout() + +plt.savefig("q4_1_bar.png", dpi=150) +plt.show() \ No newline at end of file diff --git a/q4_1_bar.png b/q4_1_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0f853db0ff385288daaeb4a015b79637c2cdf5 GIT binary patch literal 19138 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 S_EF4>w#U%S;K8@w|MXvG1@v$L literal 0 HcmV?d00001