- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 81
- 收听数
- 1
- 能力
- 120 分
- 体力
- 554081 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 171597
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
( D, y2 _' k# H" Xpython+matplotlib绘制南丁格尔玫瑰图: l# C, M- a+ O3 ?* l
实验:绘制南丁格尔玫瑰图1 |5 A+ m/ ^2 P& i% H
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~( }. s' m1 I% x- `. X! _. A
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.6 ]3 C: \2 b# h' a
K. _1 p7 K9 S: q7 y: o# f
文章目录
, O: c) {2 u# E- \; `! o% G1 t' u0 c7 _6 P( w* B; W7 s; f
一、实验目的
6 [/ V" t* Q4 e6 d" ]" v9 q二、实验内容6 @! f" \. ~+ I2 [" J
三、实验环境
7 G) R/ R$ A3 Y. `7 {2 p, C& A四、实验步骤
9 n! n+ `) |8 p五、实验代码及测试7 ~0 }+ J9 [* U4 k: @5 v# N
1.源代码
1 C R6 @/ |- k! y& s5 V2.运行结果
$ G( ]9 j; d2 E; L6 V' O3.excel数据表
8 P+ \3 ~2 |6 d- h# r/ v. r一、实验目的* z" l/ X6 v3 r$ S+ d8 T4 z
2 _ k7 |' {# m- c8 Z- p+ Z 了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。+ z- E! q. R" f: y$ _- z
3 I. P- O( E4 E' O二、实验内容4 k( n8 _; b9 w
3 G: ?$ F( t! e& P8 T% B
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
! X/ k) w& t! m' E# I+ ^ 自行选择一组数据,画出基础玫瑰图。- [0 r) ^( f: y% ~, i, N: B
! F) q) ?5 K& p/ d$ ]4 C# C0 _三、实验环境4 B) b+ n4 f3 A
" F: `: D1 {0 a ython 3.8" v" \( }6 d! E" }* m; o: p
' E/ p, j- }5 z' Y( O四、实验步骤
! U( Q0 Y! J; e0 I3 \4 i* i: T3 ^1 C! ~( O8 t$ O
查阅文档,了解南丁格尔玫瑰图的原理。
/ E- a9 s+ ^6 h. k2 v选择一组数据,编写程序画出玫瑰图。
4 o/ I1 W' X l q$ l; s五、实验代码及测试
4 v7 g7 @9 h. t
4 e |& b& o7 S% ^1.源代码- g5 T" r. H% m0 C' r' _
) e% [( R7 V" ~ ~% Jimport matplotlib.pyplot as plt
% u; ^/ u% E" i& a( [# bimport numpy as np
# F8 j! g/ f$ n! Zimport xlrd
* d+ W: Y* V7 \0 [" N0 ?# Z% c. ? u0 D* ]2 n5 t9 s3 F9 T4 Q
'''
5 M; b8 j5 }! a* M+ }9 n 按列读取excel文件并存入两个列表
7 n" x+ b# G& E6 l; O* r3 R2 _) r'''7 X2 d! n$ a/ F! c3 [/ S- j1 T
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') * F6 f: _3 E% y
table = data.sheets()[0] #通过索引顺序获取工作表7 Y: c, z% ]# \$ O* _
cols_n = table.ncols ; I4 o6 \: w0 ?
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
+ ]& S: |: k. N3 L+ Jdata_list = table.col_values(1,start_rowx=1)
6 [' o8 `! i3 z+ N; m# print(data_list)% q# c8 s& C" P R
6 S2 |3 F/ B( v- I6 {5 v
'''
, [/ T- N, V5 S+ V5 r/ b 计算角度
" w* Q+ r; [, e7 t'''
3 @6 P9 t7 i/ ]# [, Jn = table.nrows-1 #去掉列名
4 {% i# r6 G/ ~8 G3 E& Q% Utheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
& X1 R ]8 J! V" z8 e- A9 p B; ?8 |% \3 S, Q: s& u. y
'''
! O% k; ~& x6 |/ L 作图
& l( g9 E0 L4 N6 h5 Y4 R2 ~& B+ }: H''' n2 X S8 X! s6 A) y6 G
# 设置画布
" P% s$ l% B2 j5 S; pfig = plt.figure(figsize=(12,10))
- D1 J0 a# v3 f' X2 m1 {8 `; k. z# 极坐标( V% Y& a5 o; o
ax = plt.subplot(111,projection = 'polar')% y2 z5 i/ H) O, C& O s
# 顺时针并设置N方向为0度
1 G, T4 y2 u% ~: lax.set_theta_direction(-1)
9 Y2 q- _* Y. G% Z& s4 tax.set_theta_zero_location('N')
) @8 K* `& @/ s& T2 v
& p0 X; x i; x' H0 x) |( B# 在极坐标中画柱形图/ U' g0 E Y0 P% O3 @
ax.bar(theta,' V4 T' m+ b- m/ H# c# \, ]
data_list,6 z2 k, I4 P3 R2 t" a7 h- w
width = 0.33,8 m$ S* {: Z9 ?2 k4 f/ s% R) \6 k) U
color = np.random.random((len(data_list),3)),
4 u( ` E N2 g+ {, [/ ` # labels=str(country_list), 9 X' e" l, S% d9 E
align = 'edge')' o; y& w! o! U" {
'''
" T: v3 x- ]" d* ` 显示一些简单的中文图例
7 C. s# t: }& a: J% K'''8 `( C3 h/ ^+ O+ _1 ^9 s. |
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体& H' D* r5 X; @8 L
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})9 z: P% Q4 ]4 I! p
for angle,data in zip(theta,data_list):
* A6 J) M# i0 c! G( ?+ [) C) V. m ax.text(angle+0.03,data+100,str(data))
3 i6 l% B' N. @0 D5 H) `6 O+ C) h: b
; D' U c; F6 _( b% i
plt.axis('off')$ l8 S7 @# O t! l5 L- P
3 [# C5 E5 @' L& bplt.savefig('Nightingale_rose.png')
* M/ A3 Y& I# mplt.show()
) q$ m. t* U5 [! X
' P" k: T. j5 ], n' l' P$ L; i( ~' ^5 S: T8 c3 e
2.运行结果" R3 O7 { A5 h5 E1 R7 W
2 t' [8 a# y$ ~0 s& u* l
8 l1 m- Z6 o& O \8 h1 o3 R, y$ k2 m6 c, T4 t& b' V8 G
3.excel数据表
: A& c$ h: ^/ Q/ B
3 c3 e# [- L! [( j2 R# E" s9 ]' m( y% Z: ?: |3 _
4.说明
! o/ R/ [% C4 l' C& }4 K' B 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.- h8 W* `" c/ d; e. n. `
实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.9 B( S6 B9 Q$ `6 d) I- C5 n
————————————————: B' F# X$ M1 {! B
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。, R) z$ [+ M9 l& D* M. |
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852! s. o! g5 |5 H$ y. R% c i* J
4 g( T m3 |# y; y
4 b2 H, i, b1 ^/ t" J |
zan
|