python实验之绘制南丁格尔玫瑰图

一、实验目的
了解玫瑰图的前世今生;了解 matplotlib 标准库中的 pyplot 模块;了解在极坐标
系中绘制柱状图。
二、实验基本原理及步骤(或方案设计及理论计算)
实验步骤:

  1. 查阅文档,了解南丁格尔玫瑰图的原理。
  2. 选择一组数据,比如新型冠状病毒肺炎相关数据,或者中国各个省份面积或人口
    数据等等,编写程序画出玫瑰图。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文显示
# 中国各省面积
# shuju={'acreade':['新疆','西藏','内蒙古','青海','四川'],'value':[166,122.8,118.3,72.23,48.14]}
shuju = {'acreade': ['福建', '辽宁', '河北', '安徽', '广东', '山东', '陕西', '广西'],
         'value': [12.13, 14.59, 18.77, 13.97, 18, 15.38, 20.56, 23.6]}
pdat = pd.DataFrame(shuju)
# print(pdat)

# 角度
l = pdat['value']
print(l)
N = pdat.shape[0]  # 总数
width = 2 * np.pi / N
rad = np.cumsum([width] * N)  # 每个扇形的起始角度

# color
# colors = ['darkgoldenrod', 'goldenrod', 'orange', 'gold', 'yellow']
colors = ['blue', 'orange', 'brown', 'green', 'pink', 'blueviolet', 'turquoise', 'tomato']

plt.figure(figsize=(6, 8))  # 创建画布
ax = plt.subplot(projection='polar')
# 删除不必要的内容
ax.set_ylim(-4, np.ceil(l.max() + 1))  # 中间空白
ax.set_theta_zero_location('N')  # 设置极坐标的起点(即0度)在正上方向
ax.grid(False)  # 不显示极轴
ax.spines['polar'].set_visible(False)  # 不显示极坐标最外的圆形
ax.set_yticks([])  # 不显示坐标间隔
ax.set_thetagrids([])  # 不显示极轴坐标
# 绘画
ax.bar(rad, l, width=width, color=colors, alpha=1)
ax.bar(rad, 5, width=width, color='white', alpha=0.3)  # 中间添加白色色彩使图案变浅
ax.bar(rad, 8, width=width, color='white', alpha=0.2)  # 中间添加白色色彩使图案变浅
# text
for i in np.arange(N):
    ax.text(rad[i],  # 角度
            l[i] + 1,  # 长度
            shuju['acreade'][i],  # 文本
            rotation=rad[i] * 180 / np.pi,  # 文字角度
            rotation_mode='anchor',  # this parameter is a trick
            alpha=1,
            fontweight='bold', size=12
            )

plt.show()

python实验之绘制南丁格尔玫瑰图_第1张图片

你可能感兴趣的:(python实验之绘制南丁格尔玫瑰图)