- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563382 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174237
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
7 c& k% n; N6 S$ H/ ?! s cpython+matplotlib绘制南丁格尔玫瑰图8 ~0 {7 }% H2 s
实验:绘制南丁格尔玫瑰图, E# f* u% e r3 N' ~, d
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~% {% u6 }1 y1 c: B: q" k1 N
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.
`2 P7 p% G" z- V- X4 |; R$ p
' B0 @ M$ n: ] R文章目录3 s" ?1 ^ H0 |( P7 F
) F+ A7 G- b( g0 X4 e7 l( j
一、实验目的
/ V& a. L$ Y) |( l9 ]二、实验内容
' Z) N" ?7 B2 B+ p- t$ m1 _' j三、实验环境4 R1 j+ q$ ~. |. Y0 e
四、实验步骤1 s6 J% e4 y2 }! H! p: x& J/ ]: \
五、实验代码及测试: | u; g2 n/ k2 f( T
1.源代码
7 i8 U8 v1 C1 d/ R7 o( b7 k3 m2.运行结果- ^7 E/ b9 L/ P) t. Y
3.excel数据表
8 Y( _( ]+ C6 C' N- ] ]一、实验目的( O) p; _: Y9 m# \
5 Y2 r8 y Y( D 了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。" g3 a1 s2 A% l1 X
& P: M* _0 a: j2 r3 t
二、实验内容
9 v& G1 u+ ^7 }& Q
0 {; q3 e$ T0 L0 T8 y: d, e9 d 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
$ P' [2 K) K4 ~2 O( h 自行选择一组数据,画出基础玫瑰图。
' w2 n( k; M0 I
0 K- w, b1 T5 }4 w三、实验环境
2 C \1 K8 V# h8 Y, k
, k1 R0 b( e: M: p. y: l4 k" b ython 3.8# z: \ v' t0 p- w- U
9 P N5 i: `- k' D V& f四、实验步骤* \/ h ~9 C+ N+ Y
0 c4 l4 S0 s( q
查阅文档,了解南丁格尔玫瑰图的原理。
6 Q6 Q9 m, _ U/ d0 ?选择一组数据,编写程序画出玫瑰图。* y7 R) a. N8 A% e6 g
五、实验代码及测试
: M+ [! m$ w9 h7 q$ Y
! w( q+ {" H9 T( k9 r) T( @- S1.源代码5 C% y- C; h. u! C) N
6 Q' Q) O" L; U3 Y
import matplotlib.pyplot as plt
& v8 M. d9 F- ?- V$ j5 ~- Z* R) Gimport numpy as np
( a& W! B7 {1 b4 Eimport xlrd( X+ V, x9 b1 C7 M
d1 ~) m, M1 i'''
/ L& e; d2 i7 G# `$ D l 按列读取excel文件并存入两个列表3 f$ F6 T, p. G$ O
'''
& N$ N4 U; B- d" l, |' @data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
H6 O# b0 O; A! ~- A7 G; o! stable = data.sheets()[0] #通过索引顺序获取工作表
1 O! F9 l9 c! s% _) qcols_n = table.ncols 5 Y& O2 K) z) i. v. [5 k/ Z
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
4 a- \6 J9 Y8 l8 mdata_list = table.col_values(1,start_rowx=1)& j7 r! ]- o7 b- @/ y: a& ~6 x3 B
# print(data_list) x9 \2 E! b1 }/ F2 A) I2 b5 K
8 u9 C4 y+ H9 S. P" j+ E( }- h* W
'''* b/ O2 i7 Q7 X
计算角度) u; c/ r- m% R; J8 Z: G9 D# \
'''
; S" ^) q, A' L; x8 q& O; i) fn = table.nrows-1 #去掉列名3 \( d) Y9 u: x7 B5 g& S% e2 o8 m
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份! {: z% m; a3 F8 h3 o
6 w, H# q* Q- ?1 W. v# q$ K'''
8 |9 W( k8 G z c' p! i, u 作图! p! ^7 |, g! m1 E
'''5 F* A' O5 J* f3 |5 _: [
# 设置画布
' H0 j) q+ F4 Z9 jfig = plt.figure(figsize=(12,10)). x- U$ w- z! E
# 极坐标
+ J. w& f& B' I/ j \ax = plt.subplot(111,projection = 'polar')% t3 j# N" Q) P" P: ~7 M
# 顺时针并设置N方向为0度0 W* ]; t: Y% o1 W' J
ax.set_theta_direction(-1)
7 w) @3 {. n$ B M7 ]% ^ax.set_theta_zero_location('N')
: w' @3 [1 t8 P0 S5 W4 r* R6 I" l2 G
, h) B, Z+ _. N0 g. U6 N5 G# 在极坐标中画柱形图
8 [, M6 ^3 C# wax.bar(theta,! a3 h/ L- e2 G2 f0 Q
data_list,! u# F2 r- V1 {+ ?: i
width = 0.33,
. ~7 X# ^% q6 q5 g, T! y: G color = np.random.random((len(data_list),3)),
& I, H% f. O- [, e; A # labels=str(country_list),
) N; d2 w, v: c2 Q1 t align = 'edge')% Z" H) z+ q3 `. y
'''
& D: E6 f5 a! S+ L 显示一些简单的中文图例
3 U+ F0 t, d- K, s* @% M'''
1 `! I% `( m N5 q1 z9 @: d, Splt.rcParams['font.sans-serif']=['SimHei'] # 黑体5 _) c; g- J$ I2 b
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})) f! t3 q$ U% I: c
for angle,data in zip(theta,data_list):) A4 J' J: Q5 q+ X$ A& @
ax.text(angle+0.03,data+100,str(data)) - _7 m; u b0 E! V$ O) o
0 O5 g& `& J. p- d3 f
& w+ q D- G/ w/ D. x8 Gplt.axis('off')
4 `1 f6 G' E% e% w8 b( Z U# z/ H! k. i' x: C+ H
plt.savefig('Nightingale_rose.png'), h3 j7 N! ^3 ^2 E
plt.show()! g+ b( c Z G6 ^& y. [
2 I9 h9 C6 B! ]
9 v8 U6 W7 ^- }
2.运行结果
- V! }- N2 U z! y8 I' @
' g3 ^/ n( C8 {: ^* A+ }# w- q+ k% ~% M" F) Y( h
* t S7 L. g7 ]( P* a
3.excel数据表: O! }* [2 W8 f/ T
2 O% x$ V: V% r9 p2 j
/ P0 B; w5 X7 o* q4.说明
. {+ p$ L- `. s8 P: g: L 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
( ~2 a' Z4 a1 Q: ~! g' S 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.! b; H5 Z$ k0 ?, ]
————————————————& a8 x p* v5 e
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。" a3 ? w+ d, Z; E8 }; V B
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
) I/ S4 a9 ?& g7 ^1 q. w) q/ J2 H; c: l0 k2 ^
2 F" S C0 v3 D |
zan
|