- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563371 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174234
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
( ^5 a4 {5 `+ j7 y9 j* ] B
python+matplotlib绘制南丁格尔玫瑰图5 l$ d1 k: o/ @+ }4 _% {
实验:绘制南丁格尔玫瑰图
. ~$ Z- }7 t: [) d4 ~6 X 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~6 R: s ^- \* } Y9 L7 M
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.
2 ~/ ~$ y1 n1 n5 S- @
; C. |& w0 G3 p, A1 `# z文章目录; t" L8 g1 z, z, t$ ?7 R- j
+ C* X' L' `& r% z) V一、实验目的
6 V, j% {) a. D4 S7 d; ^- Z! i' Y二、实验内容6 q" C+ J/ R6 M' t8 E$ l
三、实验环境6 S! U5 ~- |, o" ?) d* E/ w; V$ O* E) Y
四、实验步骤
& S( L g$ U" |五、实验代码及测试
& Z2 |: F9 b0 V* p* T1.源代码
& u6 R3 L# x, E4 {3 Z2.运行结果& B# Y- D1 F8 Q- e! H1 w
3.excel数据表
}1 C# e1 ]# _$ [: q- x一、实验目的
& I. Z/ [- Z# ?% D7 u8 s( l- U5 T3 }
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。9 M& P6 g+ N/ ~6 o8 ^ H( L4 f
) Z6 H* @ C: l: r7 }1 `/ K: r+ n二、实验内容
4 }+ y* j- ] B8 C& Z
5 y& @7 ?$ ^5 q, T: l5 X 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
% M2 \; } R! t4 m( N2 n 自行选择一组数据,画出基础玫瑰图。
( E# I% d* c% p8 b5 e4 M0 L0 |) U
三、实验环境. g, M& j9 k$ m3 |+ j& k
7 j+ ?0 d8 E4 S/ [
ython 3.8/ m$ o7 R; V1 n
* m* K }, i: w
四、实验步骤
$ A3 }' t* L) P( ?, D0 Y3 _$ n3 v7 x7 c, ]! \* O
查阅文档,了解南丁格尔玫瑰图的原理。
7 Q5 C4 s5 }) o$ }9 a9 H# P选择一组数据,编写程序画出玫瑰图。
6 r; W+ {% \0 z$ u" k) z% k" v0 Y+ b五、实验代码及测试
0 t/ D( x3 E( G' d- h8 ]3 K7 o% W2 e' l) f, x) O" W9 V* d3 y! _' a
1.源代码
. V1 b3 k4 ?! K' X( o' |
. B0 i0 a9 H/ Q9 e D2 k( Limport matplotlib.pyplot as plt: T. K' Z4 C: F. I
import numpy as np
3 p- W9 Q! Q) n5 v0 Simport xlrd
! O+ v2 A! o8 D1 L O; b& F: f( [# m
'''
( h* a; X& u) O 按列读取excel文件并存入两个列表- \; s7 q: g' |5 }/ E. x
'''
1 o# X/ Q7 ?/ cdata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') - R5 Q& e* D+ r k
table = data.sheets()[0] #通过索引顺序获取工作表
2 o( d* u5 I/ k# G* p/ jcols_n = table.ncols
D) T# f$ Z$ s3 i$ @country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
+ O& C; K6 g0 ^+ L9 a" Idata_list = table.col_values(1,start_rowx=1)
1 S! M* T* F G# print(data_list)+ P+ Z* q' `# X* k
: W0 v! J, M' |# v0 Z
'''
6 h% r3 [% X6 S 计算角度
) U+ [7 X$ [8 W) }7 p9 |8 e8 R5 S'''
. k0 _, E1 b4 ~8 q; f4 p0 Bn = table.nrows-1 #去掉列名1 Z' c- w' `6 f9 o
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
, v7 m1 T0 j' C) ^) }% G( a/ I! G1 y: O/ }: ?& G8 B$ m
'''
( I, X) s7 y5 S; W& d 作图2 b3 o; h8 t: e8 y1 H# V
'''
) l! ]- \8 g% ]. h% t# 设置画布
9 t8 U ?! F( R# p6 f. H8 l4 Sfig = plt.figure(figsize=(12,10))2 u( y7 R8 n. v4 [7 }) v/ z
# 极坐标( b# E+ \6 Q. j/ p( h( h, w
ax = plt.subplot(111,projection = 'polar')
! C4 w( ?" J( {7 X4 A3 B& }# 顺时针并设置N方向为0度
9 v* u U7 ?7 N8 L8 gax.set_theta_direction(-1)
$ A& r$ t+ m A5 |. lax.set_theta_zero_location('N')
# V9 L& _( K/ t! @5 W9 Z' L R
( c. a& P% d. E3 I; U5 C6 q# 在极坐标中画柱形图8 ]& L7 d ]; A( q
ax.bar(theta,+ Y* A' }% v+ x. k1 l4 r3 ?, K- u
data_list, d3 ?) _ h' A$ o: Y( h" `% \
width = 0.33,
. x2 x& P; Y8 |! O7 V& A9 W color = np.random.random((len(data_list),3)),8 U7 q0 {! O8 h6 w5 t
# labels=str(country_list), ; i' S! Z0 V# O$ ?
align = 'edge')
1 o0 ?) s& G# N'''
1 H& i3 B# [- J( w 显示一些简单的中文图例
9 D2 U$ I" ?' E, R0 `2 ^6 M'''
/ _" i7 A+ m3 U5 zplt.rcParams['font.sans-serif']=['SimHei'] # 黑体) Z' G3 }: L6 Q; n/ C- n, d4 W
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})
( ~9 [1 N4 O" l. s" wfor angle,data in zip(theta,data_list):# @3 J$ |& @$ w$ G
ax.text(angle+0.03,data+100,str(data))
9 X% ~' v, ~2 W; Y+ e1 i. [- k9 r; C5 [0 W
3 r6 |* A0 P0 ]7 B8 R
plt.axis('off')6 [8 I: @8 a/ v0 { K3 ~
' D/ n( Q! }; i
plt.savefig('Nightingale_rose.png')9 g( ?& M% `1 G8 D6 n
plt.show()* h2 t% Q1 m0 p+ J
) r- R8 \" w5 J. Q0 N4 I; B3 N, E: | L% s1 h9 h
2.运行结果
1 j: M! i0 ] L( v8 _1 L
5 I ~1 D: ^6 c' _1 T `
$ S/ [) L. y+ c2 J+ j+ w( D
" n# N# t: Z j$ u& f2 x3.excel数据表
, D6 T( g: s( \, G9 P
9 L* i% F3 c( ?2 I- \/ r9 d
- A4 r6 X9 U/ L0 q. Q8 w
4.说明6 C0 t; [4 e0 ~$ a( S5 h
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.3 V! n- S) W' W; r, \1 Z5 _- ]
实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.$ [$ \! c [9 O% v/ n3 C7 P
————————————————
: P- O: G8 X9 w4 P3 T版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
/ E( Q* M' T' n( X/ C/ B* \0 y/ w原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852: p2 h* X0 s" Y: O
' j% Q4 A4 X5 u. Y4 r, `
3 R/ l2 l' P* Y: l! K% h. Y( l |
zan
|