- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566992 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175320
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
4 g) _& Y, r! b! P# z" k
python+matplotlib绘制南丁格尔玫瑰图
5 H9 m( H/ h0 b5 o" u; P1 J实验:绘制南丁格尔玫瑰图2 C6 E2 Y4 s9 \3 W7 X% n
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~ f9 A0 `! I( g; W# p
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.- @8 s) Z1 E5 v# n) X
: n$ f8 ]% k( g* B
文章目录
& C/ L1 ~8 \( i
8 W0 ~; X" C9 S0 T2 A6 {% V5 U一、实验目的, J5 a# I: B7 l/ }! d1 `
二、实验内容
, W- j1 Y3 H5 A" X三、实验环境2 ]! C' j; |3 R: d% j5 J
四、实验步骤' \) H% o- u. u
五、实验代码及测试
6 V+ j: G" r( ~* f1.源代码
5 p) @ i/ t! I2.运行结果, J# i4 T0 ], G9 w
3.excel数据表
) s; W6 }5 i" p一、实验目的
) h1 x6 l2 f0 x# ~1 V8 p
0 Y$ f' d: M6 Y* o" @ 了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。; T) L; q/ N7 @3 F0 ~
6 ]6 v$ ]0 ?: i8 m二、实验内容1 A, B$ Y# v' R4 D
1 v5 b3 c* h- p9 y 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。* e4 p9 |& |/ u |8 |7 V
自行选择一组数据,画出基础玫瑰图。
5 V3 {# R, V7 u K$ Y, \# l U
/ ~4 j- [: D" y* a8 J0 k三、实验环境0 h+ }3 m0 a8 q) R
5 [, }% L7 V6 U( V" m
ython 3.8
( ^5 d( D: Q% V% w9 u' b8 J1 q3 q6 F( ^
四、实验步骤4 u, u( T" H7 x+ E- ]1 p
& R1 l. D2 ~" a
查阅文档,了解南丁格尔玫瑰图的原理。
% F+ L$ Z8 u# Q. H选择一组数据,编写程序画出玫瑰图。
/ x7 k: C8 x7 R: U6 i1 J8 D五、实验代码及测试
9 M/ f8 ~0 e+ [' y& |/ }! p6 Y
7 ?2 j$ }& `3 J6 r% e9 {' G( m5 H1.源代码! R; i5 J* S7 Y0 h! r) q
% z N: }5 M2 v, q4 fimport matplotlib.pyplot as plt
* D( n( A( E8 k3 J) M- o" simport numpy as np
# g) f9 S/ _/ Nimport xlrd) _# X& q/ _1 X x# D5 ^
- ]; b7 I$ z) b c9 k% w6 D8 X'''/ L1 S* _* f5 ~, K6 A" q
按列读取excel文件并存入两个列表
, R5 N" P$ T- J6 Y9 i'''
0 T: k! \, L- t7 F& jdata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') , L8 \9 B8 ?; Y4 |$ A3 y) T
table = data.sheets()[0] #通过索引顺序获取工作表5 t; B; W) C; a
cols_n = table.ncols
$ y/ X% p: ^. {# @1 tcountry_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名2 g+ V% v5 d, {& T" K2 w4 P2 {
data_list = table.col_values(1,start_rowx=1)$ I n8 ]. V) \- Z+ e7 v" p* }
# print(data_list) D5 Q% Q( y* @' j$ G, G
+ Q) H& T+ s. N# }
'''2 l& T0 T5 F# y8 O
计算角度8 ~6 A5 @2 L4 r) a
'''
2 [: Q R2 z) P9 an = table.nrows-1 #去掉列名
2 Q9 Z7 i4 y8 I+ Qtheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
6 |7 O* J. X$ K0 `1 f! b9 C9 A) o2 K$ j( X% Q
'''
& ?6 p: s) \' s( q 作图8 A) U% Z! ]" e9 L! Q K K3 D
'''$ G C4 X% q7 L/ ^# ]& R- E( `' l
# 设置画布
+ ?! A! l1 I; M# ifig = plt.figure(figsize=(12,10))
/ ]% h t a; F+ X' X# 极坐标- N: H4 S4 o: Z: z( B
ax = plt.subplot(111,projection = 'polar')1 @2 U2 b O/ K8 c5 C" c' T2 Y
# 顺时针并设置N方向为0度* i6 l& U) M5 z1 O3 D
ax.set_theta_direction(-1)6 G% e3 T' P$ x1 V' ]% B
ax.set_theta_zero_location('N')
0 }( c w' ]' Z9 [5 {6 J. `: h
. C! B) I1 |8 x v# }, d+ J# 在极坐标中画柱形图. l' H# {$ m9 P% j8 F A# h
ax.bar(theta,
5 F/ f7 ^) o! I- ` data_list,
" t1 d8 i1 J3 i width = 0.33,! D0 h B5 ]6 H0 `
color = np.random.random((len(data_list),3)),
0 O+ O+ v3 b+ @) x1 D% j # labels=str(country_list), * e8 W: ~% J' d' P
align = 'edge')5 E/ v/ F& Q9 p: e: [/ K, Y
'''
, F: K) q: _( Q: f7 M 显示一些简单的中文图例2 |5 h' C& Z; m7 o2 I
'''
5 T. L0 N; a9 ?. }plt.rcParams['font.sans-serif']=['SimHei'] # 黑体
. b2 [+ q. }1 H# [- U2 f5 {; Q* ]ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})
4 r7 x- i" o. B! ~, efor angle,data in zip(theta,data_list):# J; S$ B* u. ]* h
ax.text(angle+0.03,data+100,str(data)) $ C- [4 A' \! k
' a h: `1 S. a0 e. @2 y/ Q# \" l8 [! a7 M# Z
plt.axis('off'). z4 K; O5 x% l+ X
/ j# S! [! {7 ]plt.savefig('Nightingale_rose.png')% ^4 v _! M+ g. I! O; _' D/ e& c
plt.show()
$ X* B/ ^$ `! R6 J& X5 F) d' Q4 @
% a5 ^9 [0 r0 X2 S; x' J- P' j I, B
2.运行结果
* ~% _; k% ?1 ]8 X
6 u1 y' K& @5 r1 ~0 \" p; @9 a7 y, p! t0 \$ W% D7 L' p( O
4 u% ? n8 |, }( Y
3.excel数据表 V3 X& `6 ]- a! ` r
* V0 b+ t& I. w. u8 C0 r; ^$ J: T
' u3 g* F- t2 N7 u7 Y4.说明, l* J G' ^ V( x& \ s
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
# R6 {6 D2 p- N 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.
1 E* L& N) n) ?' R————————————————- T2 U' t8 R5 L; g
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
( o" c, r) s% O+ I T, \8 [原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852* k: i$ m; a( V4 |1 z7 M
# q0 G) _" [4 k5 U
: q* Y# k! @5 X! Q; _$ \
|
zan
|