- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563365 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174232
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
h; i6 t6 U1 i: w! r+ ?: Y( o" W& apython+matplotlib绘制南丁格尔玫瑰图
- m+ K7 \% B G实验:绘制南丁格尔玫瑰图" ` S0 m$ U/ T
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
! t! D: u: _' I2 O) N; Y 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.
7 @# n2 I, K4 g; C2 U
: C) B% @! ~1 n6 ?8 g9 a+ h文章目录
- Y; O7 x& v4 n# `
4 w' M5 e: `% ~) Z5 G; M一、实验目的" q* r% [9 O1 N: ^' C& r
二、实验内容
6 m4 [ e. G c Z三、实验环境3 y( x! R- y, Z' k
四、实验步骤
/ u/ h" O. J" I# t. V五、实验代码及测试
& M+ W6 n( j; R }5 o7 x1.源代码9 B* \5 c* e w+ j3 m
2.运行结果2 Z" }+ t8 u D* r0 j( D6 @! C
3.excel数据表
/ \+ K8 B9 Q5 t' r! f" o一、实验目的; S6 C$ a" T, f I) f& }5 V% V) t
6 n0 Q* x$ l% q7 F' q& W; P
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。 A0 d' f' E9 V" b7 I1 S
- Y/ u0 d$ P0 X/ x' D- Z! s6 m二、实验内容
0 c. }/ T1 Z* i0 p" T! g# a/ Q5 G- b3 `5 _/ r
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。! E6 T/ ?* T# Q' p) G
自行选择一组数据,画出基础玫瑰图。
) X4 o( d9 f* p1 k1 C8 N8 e' Q- I' T% C! J! g$ F* ^
三、实验环境
3 T% i0 G L# b# X6 A. m9 ?! u6 v" {% A# u5 z" L
ython 3.8+ z* u2 F' ?3 m9 ]
$ q. V* N; D, i1 @四、实验步骤2 [% V, Z3 k' ^" V' L
4 y/ l! k! c: L1 i; I2 q查阅文档,了解南丁格尔玫瑰图的原理。/ c% [" p# a, x% K
选择一组数据,编写程序画出玫瑰图。
" _: s6 m# e1 h% s五、实验代码及测试
O# Z( p, }, u7 r' a3 S: Q
$ z7 I, w) L, K7 v' y( m1.源代码& e; k5 a# K% M
% m) v; f2 A4 K: limport matplotlib.pyplot as plt
' ~7 w1 I) t0 V+ B5 V5 ~import numpy as np
+ l( Q' j; p1 g& K7 K. F/ x% ?import xlrd T4 ?$ i, f" E6 {# U% C
# E6 S. p3 I: j/ C6 _'''3 g' c9 }2 T. U M% x9 Z
按列读取excel文件并存入两个列表- O- t/ @9 a% R, N
'''
5 y# x$ e* l1 G+ r/ R1 u0 l$ }, i$ ]data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') - g# O! A( p2 n4 [; ?
table = data.sheets()[0] #通过索引顺序获取工作表! m7 N" r+ y$ q8 V3 D2 z1 X
cols_n = table.ncols 8 N3 v# n4 u, z$ O
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名8 M6 X, k- H2 y5 w& _5 m7 H# k' ?
data_list = table.col_values(1,start_rowx=1); |4 e5 r8 |' j6 Q6 g
# print(data_list)4 v f& X" h- P
" Q& W. M# I, M: z
'''+ W4 H0 m! s4 @. @/ s: K( ]
计算角度* P# U% t/ p3 T7 B, S- d2 P, c8 ^# M
'''
$ w$ x" ^" T% E. Vn = table.nrows-1 #去掉列名
2 ?6 o3 A! |6 R( |, mtheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份8 b/ H P. _. d2 Y. ^0 U" ?/ u5 m
3 s& D7 _/ Z t'''
9 J$ J# Z& ~; Q6 `7 b& V* T) v1 m 作图" k7 d: u; p# E& F; v
'''
( y; H$ A& c/ \. G; a& \2 G# 设置画布- o5 N' o6 s$ U1 o/ z
fig = plt.figure(figsize=(12,10))3 e5 E3 S5 n$ ^1 v/ U2 u& U" l- X: |
# 极坐标
5 m/ |! v O0 r/ Z e$ ]ax = plt.subplot(111,projection = 'polar')
$ t. l9 a' k5 c7 V4 s- y: Q7 j. _+ _# t# 顺时针并设置N方向为0度
0 t6 h- i8 P$ bax.set_theta_direction(-1)1 L7 a7 e( X- H2 n3 d0 q
ax.set_theta_zero_location('N')
- }! R# z5 W! D1 X" I1 a+ b% A! a$ O+ @- {) P
# 在极坐标中画柱形图
m7 l0 r" t/ e, Oax.bar(theta,
0 o* W6 q4 w: z4 B- j data_list,
" g( P" U) t5 H: d- { K width = 0.33,
/ R: l" A; p5 d- u9 z9 |( M color = np.random.random((len(data_list),3)),
* J7 e! z+ M6 ~; w0 m/ b& L # labels=str(country_list),
* u3 r2 I" I) ~) { align = 'edge')
2 \6 M, i9 m O8 V+ V; D# t''' " X% P7 P- w; F
显示一些简单的中文图例
9 f+ r+ ?9 ?$ \6 W8 `" K3 {# a'''
) \0 S s, w$ h$ |0 Rplt.rcParams['font.sans-serif']=['SimHei'] # 黑体
0 {* B& G- _' l& y) n2 J5 j' e& Pax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})& G$ I$ ^+ d4 E3 ~
for angle,data in zip(theta,data_list):& j5 C3 ?. y6 l! P
ax.text(angle+0.03,data+100,str(data))
$ D4 ?- [: B( H" w2 ^; \; A$ v1 J( u8 B- Z
. H6 x# U+ k5 W* Fplt.axis('off')9 X7 d! K* a7 B5 d3 H
6 Q1 p/ D: y* ~$ T% [: v: X' t
plt.savefig('Nightingale_rose.png')8 q8 I5 ^- J8 u" K7 I/ ?
plt.show()9 }3 L/ g6 ?# V
, H4 }, T' V* M" l' m
( s' K$ c) |# V2.运行结果$ W' n2 O/ `3 T1 W
- Y: H Z. O# t% k3 B
& v8 ?* x) k9 w6 k4 G
' q" v7 R: Q" F3 _/ A7 z! {
3.excel数据表$ r& [% z6 g2 B- v7 }: k3 Q) Y' x
7 x" p6 }, y" t: y
x5 U: z, h/ D7 Q* E4.说明; ^, I( u2 k6 I/ m6 f; I6 T3 K6 O$ v
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
- v- ^/ k# t" C3 ^1 q 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.
% A* ]4 o, `" z2 _8 c# J4 L. Q% d: d————————————————) Q3 Y& m- @" T# G: l8 i
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。0 q$ k! Q6 M4 W4 l& ~" y9 c
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852& P# L; A% G/ ^7 c
* n/ e& T1 D% z( [; A% A% l
% g* M5 ]' b. O- o' j3 C+ ` |
zan
|