- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565408 点
- 威望
- 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年大象老师国赛优 |
: O8 B5 g( |. cpython+matplotlib绘制南丁格尔玫瑰图
1 p( r( c; |* U" Y1 w Z实验:绘制南丁格尔玫瑰图
; e- c d! e' m 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
4 }9 L9 M+ C" |9 D! { 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.9 g% V$ r2 F# F* g- ?% N# l
; @; k! s$ Q, Q6 F文章目录
% G* A2 L/ j9 c; ?" D2 x( |- v6 A/ i0 U0 w, {' s' o
一、实验目的
$ I/ }8 J0 ]4 e) U7 _9 d二、实验内容) k B: W6 _: r ^
三、实验环境
- E1 T4 D: u! i# q I- @/ N四、实验步骤- W9 S8 ?2 g w$ N
五、实验代码及测试+ ^# [6 F1 d4 k
1.源代码
! G6 _; Q, F# ~2.运行结果7 E: K4 G8 H$ L; Y1 U' z/ J2 F
3.excel数据表. B" ^1 _% _/ G3 G, E+ `
一、实验目的' [0 b- o0 p7 S
9 J. {# b: Y {1 O
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。$ X; N F. |! j5 t1 V( u
9 e' T6 g1 I7 c3 s4 `( J, k
二、实验内容
9 ~$ F5 j) v4 _6 T. Z
7 ~, ~. u1 y: c" d 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。, u. Z; D" ^$ ?' F4 E* Z# j
自行选择一组数据,画出基础玫瑰图。
) S1 a( ]) Q. `0 \; E1 |0 q$ V( u
7 W7 C6 r0 ]' Q S3 m三、实验环境
5 _) _$ }6 H+ ]9 R0 i9 Y. G6 v y
3 o8 z" g& b( Q ython 3.85 T- D& J4 I8 k |2 ?. X) a
$ M7 a2 y. t: s5 T4 N+ t
四、实验步骤. f8 [+ j4 b5 @7 g# p- n0 N) S: t( `
, Z2 R% R) W) P, N
查阅文档,了解南丁格尔玫瑰图的原理。4 m. c N/ g# c( R* f
选择一组数据,编写程序画出玫瑰图。
# Y; L8 j/ c0 v五、实验代码及测试
0 y; p0 L- K. ]. S6 ]6 z9 O
& b; J1 b/ m9 K5 d1.源代码
) }! @1 B' v2 Y* I; I
% s _- c. w" ?+ ]import matplotlib.pyplot as plt
! B3 M0 R5 V; w- rimport numpy as np. M$ `4 J5 m) M
import xlrd
4 m2 y- A/ _0 N4 S4 p/ V( c( _' n1 W
'''
6 _1 ^2 x ?0 O, v 按列读取excel文件并存入两个列表
' G! c7 I' n) ~( ~ H7 F0 t0 Z'''
' f* H3 i: J5 F8 m4 B0 Fdata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') * f3 J2 L+ W: ?% f1 b
table = data.sheets()[0] #通过索引顺序获取工作表
0 |" w% E: C% {0 e9 A) `2 Scols_n = table.ncols |0 C: W4 h* B. f9 }
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名0 Q2 M, z' y: ?- |6 \3 [ _$ G
data_list = table.col_values(1,start_rowx=1)
. E+ a/ o. W2 E, C( a# print(data_list)& M% i* D+ N3 X7 R( s' {6 n
) r' ?- ~: _3 {+ ?: Y'''2 z! g1 P* v% D8 B' N0 v$ {
计算角度& N. r! v! w) I+ \/ [9 r8 M' ^
'''0 }/ `& w# i8 d, |* a3 g$ ]
n = table.nrows-1 #去掉列名, b. @8 W9 u9 v( [9 h' r
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
8 B; H F% v9 B6 }- F& n/ t) E R; b# ?8 X& W3 t; T
'''5 B$ x5 S+ ?' M! v9 {! O
作图, |+ D/ O2 X& Z8 u0 N: @" R
'''
; T( z* d1 d3 U# v+ \# 设置画布
" ~. W+ X+ b H. Gfig = plt.figure(figsize=(12,10))5 O! y4 l. [4 c8 q9 H1 m
# 极坐标
% k; K+ s0 [# Z% kax = plt.subplot(111,projection = 'polar')- G6 N- F# @. Y5 h% R% P
# 顺时针并设置N方向为0度4 C0 y) f( c# q- i; n9 E" _4 h
ax.set_theta_direction(-1)
; f B. o _3 N" ^4 Vax.set_theta_zero_location('N')
" D$ c. c- s B+ s. n- k" v6 j
9 M! l: j6 g1 E; g, h A# 在极坐标中画柱形图2 Q! i6 H+ y; u# \' ^9 }7 k
ax.bar(theta,
. X+ b+ I. R( |- | data_list,
5 L7 Z6 b& @1 G! s width = 0.33,
. H$ Z" w0 [0 M! N1 y& Z color = np.random.random((len(data_list),3)),
s' N: m1 P% r$ D% |5 @) J' G4 S # labels=str(country_list),
9 v o) Q! z: u7 n align = 'edge')
) y) O" f6 f: k! s' b& x'''
) n2 s! i6 v. }; K4 s' M; y 显示一些简单的中文图例7 Z' S" I+ ?+ D9 ?0 T9 d
'''8 R$ }' i6 ~* z
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体
4 R! Y& C. h7 T+ z9 vax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})
# c% T- v$ b! B K3 @/ Ifor angle,data in zip(theta,data_list):
- p- A5 P2 y; } ax.text(angle+0.03,data+100,str(data)) # R. w2 w* t3 D6 t
9 T: ~+ V. t4 K, E& e+ {, g
7 Q0 x3 \! r8 B {# D* ~2 h$ E* qplt.axis('off')
: K' R3 s! O/ `9 _. x
& E9 h2 j& I' u( Y: y1 z4 splt.savefig('Nightingale_rose.png')
2 X5 s. o6 K9 }& Aplt.show()* [ y) B# y1 K* J
. T1 A6 J5 N. |* W. t% E
4 u- R6 e( W- T D# ]) l2.运行结果2 Y* ]8 @. V, b4 I) V9 }
/ }) ^9 h1 H0 a! w$ u
. o3 x- B- C8 _ ^- ~. C% i0 r6 \8 i |
3.excel数据表5 G' {7 n# }# w1 N ?
0 G, E( f9 W( k* u2 e" f4 l/ O, X1 Q5 I- \( a$ S
4.说明
6 A4 m8 S2 b( n 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
. X1 x4 n: y8 c 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.& i) U" d7 `- C' O, Z; g* N
————————————————! _+ ~- P/ W& C
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
3 ^. _0 [. a1 @( b7 B) _原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
! r3 g- C/ j7 t3 A+ c6 F$ p2 U% a7 K F- C
& M1 Y- l: l& z+ R# Z
|
zan
|