- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 562627 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174161
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
" {$ a7 W% h" q4 Dpython+matplotlib绘制南丁格尔玫瑰图: _9 ]6 o* c6 u8 Q- _
实验:绘制南丁格尔玫瑰图
/ {% e) ^" ^, R' b: g; r9 Z 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~; O( E x' P! `2 G4 {' G/ |
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.
! V# N* @' H7 T
" \! d0 f7 {/ A4 n文章目录
5 j' y# S( ~! j% a) Z& \6 [
+ M7 K; x) d y7 D, p2 u一、实验目的! t: ^8 U" Y' O: Q
二、实验内容
7 G' \1 `! M3 @& M) d三、实验环境
2 h+ Y+ u" b# B2 T" q! C四、实验步骤
' T3 k' H8 @- v4 J' X8 Y五、实验代码及测试1 [3 \( M* f# X( P" F; U
1.源代码& T& Z) N: v% r0 C: e
2.运行结果
8 [/ U- Z5 ?8 k' v K1 Y3.excel数据表" u. E i: I: T
一、实验目的* X* x) W/ n/ H* ]# E- k; q
F0 H. v+ Y* k ]: d
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。5 W1 Y) I- ~9 Q# b% T* w2 ?
* S% _2 f Y2 f% L) c
二、实验内容
7 _8 H" g! _" e9 _/ I
% X/ W% _. ?) s3 E0 h 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。2 V9 _) y% L% A" {* Z, K) L
自行选择一组数据,画出基础玫瑰图。
3 X) h N' M' [3 C; H0 L' b2 n" f; u$ i) ?
三、实验环境3 G8 O9 G2 Z9 X' l" X5 f T" V1 z
) \' @5 X' k8 M7 _2 M% Z
ython 3.8
- R5 A( \: e1 x' h6 G3 ~% t1 Y: n' U# H3 _( J. d) d
四、实验步骤
4 W& s, z( p" `4 O( U( b! [$ g" A, r3 d4 m, W* |. b7 M
查阅文档,了解南丁格尔玫瑰图的原理。
- X0 v$ D: ]0 M选择一组数据,编写程序画出玫瑰图。
- P" K# n' p$ Q五、实验代码及测试
) [' x4 m+ T" h% V* e2 U1 V& N# Z: j7 f
1.源代码
. T& s+ u% u( w$ V0 Y, @9 X
: k& ~2 Q9 V. Qimport matplotlib.pyplot as plt
9 W( m* r7 w. @) iimport numpy as np8 {; m7 P* t: |4 k6 k, N
import xlrd* W% K/ f8 j* E3 }( p" {
8 U, ^) E) x/ O9 E, K3 h'''
j8 B+ {. h$ {" s/ m5 a+ f 按列读取excel文件并存入两个列表
( c5 ~2 u! N) V- p7 l4 y" Y& B* a'''" g% T* L, j! B/ a) n9 ]; A, S' m
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
) s' T/ L a# Q$ s- M$ R5 xtable = data.sheets()[0] #通过索引顺序获取工作表! z3 e( y2 f% r" m7 G5 X
cols_n = table.ncols 9 o6 E! g6 [! S/ [- ]
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名 g$ N) b+ A" [: d& N8 g9 E
data_list = table.col_values(1,start_rowx=1)
" p0 \# H; L) I, N' K# print(data_list); E( Q$ E6 M/ d5 J
; Z7 a) ~7 C- s S$ T, {
'''% E4 Z9 Z d6 H! d
计算角度
' |4 Q7 \. |2 t: k1 R; N' L i* W'''+ N) S G9 a$ ]5 X- s
n = table.nrows-1 #去掉列名0 @. F* e& [4 r v
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份$ P9 l! O- U6 y9 \: ], P6 E' w
$ T! L9 f) [+ L5 n: q1 n/ \
'''9 f+ W1 s" M a
作图
! n F: y. }8 g8 @" ~% t'''* p4 z. g8 T$ ]) k7 l4 k: n
# 设置画布! M! v$ a0 k5 t( ?% P5 O* C1 R& R
fig = plt.figure(figsize=(12,10))
1 M1 s. |- b. U8 \! K) A# 极坐标
; t9 g! T7 F! t* Jax = plt.subplot(111,projection = 'polar')" G8 s+ m, n1 v& A/ P i8 v
# 顺时针并设置N方向为0度
# s" D8 A0 k; k$ M) r4 Oax.set_theta_direction(-1)
0 X) v) D" g4 ~# O+ i; k! lax.set_theta_zero_location('N')
+ h( i3 w* K$ Q' |
( |( V- M4 @% f( e/ k! g# 在极坐标中画柱形图+ y$ C9 S6 ^9 X2 `5 g5 i" n- [
ax.bar(theta,& z; A8 c8 b/ ]5 n# g
data_list,
; U6 n' n+ ~$ q$ V3 }$ ~- {5 T: q width = 0.33,7 M3 V1 x; V9 q1 x1 u
color = np.random.random((len(data_list),3)),* l. S' E e+ v1 }
# labels=str(country_list), ) ]0 J5 w8 S* S' T# N' i
align = 'edge')- y8 {) L/ d' M
'''
8 ^4 @$ ]$ g3 ?4 N8 J& o2 [ 显示一些简单的中文图例
3 @1 C( q* {* _: a'''* J2 K$ c) |) w# I4 W3 P
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体3 A2 T$ S. i: T) o, ]# p
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})) A0 n6 Y0 F- D/ L% ^3 h
for angle,data in zip(theta,data_list):& e+ Y6 C: D7 \
ax.text(angle+0.03,data+100,str(data)) * G5 r/ ?, J& A
& c' {3 \& j. F5 H& m( f0 E+ r. y
plt.axis('off')
3 [: f8 @5 q% h/ h; R# i M0 G4 u, e6 J2 X# w
plt.savefig('Nightingale_rose.png')
" F& r: c" ]+ @6 `2 Q4 U9 _plt.show()" m" F1 b0 o2 H% k
# G- p8 i6 A$ K) c7 m
$ P9 j! n! ]/ W X2.运行结果
7 h" I# f' s9 Q6 ]8 R3 d. h
2 U% G* u( ?' p# \
: V( n8 r! g, i5 P% B! a
4 @. I# f& x5 Z! J0 N8 A9 p
3.excel数据表
% Q& }# _; L) ~& ^( g B1 R
5 k; X8 C+ ^& k
6 z( L9 j5 Q( t: s. r2 W
4.说明6 K# \- i& h; ?) a( E
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.+ {/ R- y# H4 n/ ^+ f/ P5 c( ?
实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.; W1 x, M* D1 m/ N' E- i3 } W
————————————————
7 y1 p5 F5 _2 H7 `* A* X+ D( P+ t版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
6 o# [) E: O8 Z u原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
6 K2 ^2 m1 f$ b! V$ ?) v% C1 D" T
4 x4 ]' T: H& J6 i) }+ Q8 U2 b6 u. m4 b: f* i5 y
|
zan
|