- 在线时间
- 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年大象老师国赛优 |
7 v1 A) A0 {$ X. h2 S, H j, lpython+matplotlib绘制南丁格尔玫瑰图
. [0 @* z4 x( m& H$ ]% u实验:绘制南丁格尔玫瑰图) e: A7 m: F7 U' G3 L; j- K- D
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
* M2 r* t2 C5 d U 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.' P3 n& x% S! k* Z/ G4 \# X$ z% q
; l: d, f; X" i0 f- A) c
文章目录+ L2 u: I0 \" m" F
1 I: y1 K" B" Q2 M+ W
一、实验目的
, v; S0 H8 d0 c6 a) M二、实验内容
% |+ A d* _. L' B+ ^三、实验环境
e" _/ l( n) p7 e四、实验步骤
1 \8 F4 ^8 B! i3 k/ d五、实验代码及测试* C) J4 b* x% z6 y/ Z
1.源代码
2 I! x' K2 q/ l" D/ `: r2.运行结果
5 u4 x9 F6 `& ]! |( \: W4 K3.excel数据表
! c2 i( o$ Y2 j- K6 T+ @4 R一、实验目的
" s2 ? d" U( I# D9 @1 q/ v ?$ ~+ k
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。" i: z0 y! b( P Z0 d) b. v( p$ P
1 ?1 s5 @+ P, e: r二、实验内容+ J \: R; S4 @+ y0 L Q
6 b/ T. S3 t8 J; I
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
; r6 y+ h* C* W3 ~ 自行选择一组数据,画出基础玫瑰图。# B$ i2 }" K9 P9 p. m7 E
2 B d% _/ s7 S" x. b2 R% g
三、实验环境/ V; p: T0 D( p, T/ s$ D
8 G+ \; y& z1 `
ython 3.87 X7 q# F& y& i- Y& \0 I0 u, \$ [
: y' w/ } W( ~/ k
四、实验步骤$ M# d+ R3 {& ?9 @6 {0 J
" g) p; I0 t; y6 r
查阅文档,了解南丁格尔玫瑰图的原理。9 E1 r0 X, s2 H9 |& ~; s
选择一组数据,编写程序画出玫瑰图。
: P7 X2 \, V# Y+ @6 q9 U7 H: W五、实验代码及测试6 c1 ^6 y* f8 P6 x1 i# W2 Q2 r$ I
2 J/ Z) u- T: q+ G
1.源代码) T# o7 V" A" x& H( B! z$ H" t; i
0 }" ~; s; V, `1 A* }7 |* E( F( [import matplotlib.pyplot as plt
4 Z2 ^9 |( h0 J9 V# p# m4 A$ C7 } qimport numpy as np6 t9 V0 l7 i+ }" [+ c5 ^4 o
import xlrd4 b% R# H' o6 Z; F7 V& }
" Q3 u; E8 q, t; o9 x4 ]'''
+ j8 S. ]% {- q1 r: h# E, o 按列读取excel文件并存入两个列表4 ^) `! C. C0 h) K& [9 g: x
'''4 j" u4 x/ A( m* k2 V9 c
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
# Z& j/ S i3 R5 e! ctable = data.sheets()[0] #通过索引顺序获取工作表3 J2 d7 Y$ D4 ^/ ]% G9 X, x6 Y
cols_n = table.ncols g# r" L, k9 g; L9 p
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名$ f# Z$ ~9 [0 b3 Z* I
data_list = table.col_values(1,start_rowx=1)! W$ ?5 H8 E6 x, Y. E- L
# print(data_list)2 {+ _ C" E3 E6 m+ f
4 c& ?7 B3 L1 e2 }) i& i'''+ k; ^/ a1 o& |! M! `
计算角度
$ E# c) Y! L! B0 `+ ^# K'''
; U8 k: i; d2 \, a: qn = table.nrows-1 #去掉列名; U7 s. C) l+ R1 w7 \: j& \) f
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份( N& }9 X# ^: i, Q9 s) s. z9 p7 I
! ?6 l) P6 K$ e% S) v0 t5 K' [ {1 W
'''
( l* S, Y* r# m8 E! ~ 作图* Y. f* u* n- w7 D: q2 [
'''
& M6 K& V& j% m# 设置画布. }9 P+ n( z9 \# F
fig = plt.figure(figsize=(12,10))
$ w. B& ~+ }. L1 m3 t* V* E: l# 极坐标. g0 x0 |/ k; E, V5 J! y
ax = plt.subplot(111,projection = 'polar')$ }, L# A! }* C, N1 B
# 顺时针并设置N方向为0度1 L5 v ]! V7 l1 A* h# Y* b) R
ax.set_theta_direction(-1), I+ Z7 b- h ?' l; z8 @, Z! b
ax.set_theta_zero_location('N') 6 p8 R9 ?( K; [ F/ S( a
. T2 ?7 k0 {! q0 b
# 在极坐标中画柱形图
p5 h8 m7 g8 @. n5 c8 d/ ?7 _ax.bar(theta,4 R4 v3 M. @1 k3 g* n2 {
data_list,
! g1 o6 V& W( x- F width = 0.33,6 r1 A- u1 O i
color = np.random.random((len(data_list),3)),
$ j7 F6 E) q- I6 y # labels=str(country_list), 9 k( R8 r' Y" B2 e, ?
align = 'edge')
6 P5 R: W0 s K4 d+ B' Q'''
1 M7 C8 L$ b5 N) Q) e; _5 v 显示一些简单的中文图例
( s: q2 I! p4 S2 Z) Q4 `'''6 v7 `: l/ F. _. @, U% T+ [
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体1 |/ B6 D+ [+ J: ?
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})
+ E5 c" z/ }! H% a( ^" gfor angle,data in zip(theta,data_list):
' j9 E# M @5 Z# x, _( R% I ax.text(angle+0.03,data+100,str(data)) 9 u- z) M' [( }5 E! c
' T0 u/ m8 J8 G w+ F6 n5 ~
! x. n' S- W$ r/ Q' U: O* |* X
plt.axis('off')4 r- q3 T( \: L3 C, ^
: d0 P( V& J9 l) E4 y' v* X
plt.savefig('Nightingale_rose.png')
- W9 C' s( m2 j- s3 Xplt.show() n" u+ d$ o$ n6 Z% D, j
: u( D+ E- ^% a) N; ^( ~4 b
" a+ L* P/ q" y9 y/ `- P2.运行结果
% L0 S. _1 X0 j6 d. U$ Z
+ V2 `# l( m& Z5 n* s# F2 n1 O0 F1 o* v% s
U0 l/ a5 J, d3 _. k
3.excel数据表
* T6 t5 w; U) B0 I
% t6 S) }: H& n) p
$ K' V" Q; A8 \4.说明0 }( D2 r, b8 S5 q( G
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
" X) f, L+ T3 d/ \- e/ ` 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到." e' U2 P; z8 O% e7 o9 j
————————————————
3 k- m5 [! x8 E6 X版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# r% w, a5 X6 H3 |2 K" {' I' z原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
3 t. L% y4 u0 L# b9 o, f& ]" L: W/ w s3 _2 T ~
* N' W' I8 ~' X; |% m0 h. _) M u/ y
|
zan
|