- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565406 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174845
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
- ~8 o2 J/ y" E4 F6 d/ x0 S- E+ p4 Bpython+matplotlib绘制南丁格尔玫瑰图4 H2 g7 j7 Z5 C8 S
实验:绘制南丁格尔玫瑰图# ]) ~8 u& }% @# c! l+ X
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
* G4 l3 I/ k" c0 p! A. Y 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.9 A6 k# E6 l+ I8 q9 @
/ s# R b' L7 f
文章目录" s5 R- C' Y, ]2 U A9 E
6 v$ i4 r2 s- D& \
一、实验目的) @; q" h% w: B8 J1 q3 |- D* l1 U
二、实验内容+ A3 [9 c( J+ [/ d
三、实验环境
& P0 G: |% |$ [& W四、实验步骤
7 F/ N: g0 s( w4 C! _7 `五、实验代码及测试; V6 Z1 |! N9 ^/ Z3 b6 q
1.源代码
; \" ~ y: W8 z5 {2.运行结果1 ^1 Q8 u: C4 D5 w- R4 b* c' n
3.excel数据表1 C: t) p+ S1 Z a0 M0 z% c* `3 Y3 |
一、实验目的
5 b6 x: d9 m8 i( j) b- @9 [$ [$ K. J* C. Z
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。1 Q0 S. j/ z* C8 _. r
' ?" I/ E& ^( E二、实验内容1 v* b* ~* H$ z/ d
|5 p* I6 W: e4 \( N- V% v 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
, I/ P6 W7 s# r' ?, U1 I1 I5 w+ f. Q 自行选择一组数据,画出基础玫瑰图。
t8 T- h8 O0 w3 S
; U. q6 E4 u2 e- s" k& |7 s三、实验环境7 t" J/ L/ z5 Z2 H1 X3 c6 U5 F$ O
, I" x' y" D" V
ython 3.8- F/ D9 K1 K: L
, x- y4 P# c8 p+ e四、实验步骤
0 n7 R$ W% d: }+ }( l8 C" A6 ?
& D7 v2 ~0 n7 B$ ]- m查阅文档,了解南丁格尔玫瑰图的原理。
1 }$ O6 O7 r. j, r选择一组数据,编写程序画出玫瑰图。
$ @9 l. x: J. S2 F五、实验代码及测试
; T+ B0 ~2 }, N5 a8 P/ l4 m6 v7 X9 D$ b, v8 V+ x& J5 @8 {' D
1.源代码. o4 R5 [0 l( Z5 _7 M
|/ V, Q+ s$ k2 I5 Z9 Y4 [! y
import matplotlib.pyplot as plt {6 W. _- O9 {. A* X
import numpy as np5 ~/ \& I+ f; N$ u) H
import xlrd
1 ]# E" A/ t+ x- V) `, h. T
& a; h, e( v4 W' \) Z'''
+ D/ c! h* L0 Q/ k% D$ K M 按列读取excel文件并存入两个列表9 h8 E" K# |% O( ]0 D; l
'''
" ^$ l( v: C1 X7 C) ]data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') # V' Y* i1 t* \$ x! O( Q7 T1 H
table = data.sheets()[0] #通过索引顺序获取工作表' i- d: |4 {! h: N8 r
cols_n = table.ncols
) C5 g4 B- K5 K( Mcountry_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
2 }3 j! w, k: adata_list = table.col_values(1,start_rowx=1)$ f4 D2 t2 ^0 W9 {2 |4 d
# print(data_list)' t% U/ j, H& V: r/ S5 J
" p8 Q) w; D! r0 |
'''
' p, p( M/ I% ~1 p# ]7 h 计算角度
# J. b2 E3 W1 ]7 ]: C9 o8 Y( {'''8 I0 {& f0 w- t% o, \
n = table.nrows-1 #去掉列名
( ^: C, X1 e. L* I: ]theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份, T" }& L) b' U( }- }# m P
/ l& c) d6 U% a$ o'''
% {0 S/ U# x* L, H8 C 作图
+ S0 M% A2 H7 z a'''
) X! b9 w' z' z. h3 U$ X# 设置画布5 B M2 F5 }6 ?# r
fig = plt.figure(figsize=(12,10))+ Y( ^: o9 p. T* j b2 V5 Y4 n
# 极坐标
( V; e! G. y+ T1 x0 @ax = plt.subplot(111,projection = 'polar')' @+ `) _. y a9 `& l- K' m
# 顺时针并设置N方向为0度
$ K! C# ~4 [6 t% p; A) Nax.set_theta_direction(-1)3 M9 O! G* ~$ [5 Z0 U
ax.set_theta_zero_location('N') . [. G, T2 o3 d, Q* y5 f) Y, [, e
0 d3 T2 Z" u* o L$ n7 `0 T
# 在极坐标中画柱形图& `8 i1 d' k1 {! r
ax.bar(theta,
. [0 W" T; i1 C) ` data_list,
% s+ g$ r! i2 U8 p( x width = 0.33,, I/ q C" J+ z$ k- X
color = np.random.random((len(data_list),3)),% N% Q( `. K8 n; G: z3 U
# labels=str(country_list), - d) `9 n1 `) P0 B4 u
align = 'edge')% @* Z, q W$ Y8 r% M7 j
''' % a1 M: {4 n5 L. u' _9 u: S; D! d/ a
显示一些简单的中文图例2 |' c% a& {& I" t! ^5 G
'''
/ A$ Z4 ^) M9 f: R8 nplt.rcParams['font.sans-serif']=['SimHei'] # 黑体
' K9 N% h: A/ oax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})% T( t! j0 Q1 T) C( M0 I
for angle,data in zip(theta,data_list):
- J1 F3 `9 \( t, ^( V7 h! G# p" ? ax.text(angle+0.03,data+100,str(data)) 7 i% f" f$ f; h
3 y b9 _5 R, |
o% H2 C. a* Kplt.axis('off')9 }% Y U! P% T1 P D
j/ b! o, X- L6 [# ^8 b; M% ]plt.savefig('Nightingale_rose.png')
' j2 {1 \0 b) F0 b l5 }: Fplt.show()- D& }# X" v3 d6 w+ C6 Y
2 |' E! S8 w# H# W9 e/ K9 ~# n" C) V. W
( g) b7 f& Q- F4 ?2.运行结果
$ [, a: C% E, w) y9 ~( W
. ]1 i. C1 \. ]2 k3 X% h, ^
( m6 q/ c! d$ P: d; s% l0 s _$ M7 H' e
3.excel数据表
2 X0 |# O8 Z4 @: F, f8 j, J( C# c
: A) o8 B/ `( L& t) G1 Z$ i) ^& q, t% I- r5 Q/ ^" @# m1 W7 A2 @
4.说明
, M( X2 _( Z6 ]6 s7 ~8 @' ` 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
# I( E# l, h/ z3 G8 q 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.
" U/ A3 _2 k* j J- Q————————————————$ q) F* y7 J1 H/ `' m
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。4 c% a# c4 x5 f+ i
原文链接:https://blog.csdn.net/weixin_42323041/article/details/1062638521 b1 X0 {( E$ T% _* `2 c
9 V. i8 w) T7 r) d5 |: {: K1 A7 h
& r- i. ~. A% W$ I, G' X& s' d |
zan
|