- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566943 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175306
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
7 p& s( F u8 p5 r; z; f! M- i
python+matplotlib绘制南丁格尔玫瑰图7 A8 ^ ~/ H$ [6 t: g: h0 h
实验:绘制南丁格尔玫瑰图% r6 }9 s4 `2 E) ^/ F+ F! [
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~& I+ A% W+ @5 ^0 `3 R
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.& \2 B7 C+ C7 }# f7 i7 g5 Y
. W. V; `! y+ d& e2 ?" ^
文章目录
: ?! X" r2 ?5 b3 C/ P7 o! G9 q3 N* t
一、实验目的1 n! v. c% E/ f( P0 P0 i; |0 i
二、实验内容( n# X0 b+ N. C; ?$ y: `
三、实验环境
2 j& h& j# a( E1 l) G: W四、实验步骤& d$ U* {8 f1 W2 H9 t
五、实验代码及测试
# C0 n z, ^( G; m; l B4 d/ p2 g1.源代码% ]7 O0 I% y/ h9 }
2.运行结果/ }3 \3 R" W+ r l" M
3.excel数据表. `# u7 b# c3 ?5 W% X7 t3 e8 J
一、实验目的9 \2 p p( ?0 a' f. P
( V/ k, {/ j2 F) K- M; p2 L
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。* x" L' d# i; s( v2 ~% L+ ^
# F) B' U; l! i6 A/ x二、实验内容
1 {6 q9 z) j% y7 F2 H/ p3 H
) @4 Z2 Y( M; A. K+ u! @) l$ @ 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。' y3 x' v v( h+ d& ~
自行选择一组数据,画出基础玫瑰图。( y! P7 r. l- `! O
! |4 h0 w5 V) W# j三、实验环境: I5 P: ]. F$ H& f+ d* m9 q( ]- f0 S
. M8 `- v1 H6 P ython 3.8
( b( \" c. j( C3 g( c# ~0 X; b: V/ G! `: k
四、实验步骤/ Q/ g C4 t& f- q$ _: Y$ J
1 z, i! W2 h6 ^$ `1 B3 i
查阅文档,了解南丁格尔玫瑰图的原理。
6 @: p7 s! t! y选择一组数据,编写程序画出玫瑰图。
R! R1 U f" D0 o9 E# y6 k3 S6 p五、实验代码及测试 t4 ~3 ]; W5 |: L: Y8 o& |
) g N B; Y. x3 u6 e& a( w2 t0 e
1.源代码6 c5 }' w' L. g, j- [3 m
( N( k4 A1 B- T
import matplotlib.pyplot as plt' L$ j& N L& U5 o$ k( J! I! M P
import numpy as np
, O" h2 q1 V8 \, {4 X% cimport xlrd1 ?; M. M0 \' h$ P$ D9 r
7 Z# @( r' z4 v. u'''9 F- z( U. e6 d% v0 C
按列读取excel文件并存入两个列表! S5 L7 Z v/ R- d* s2 K
'''2 O$ l( Z! `) ?5 a2 m
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
: d8 m4 U' Y- r# `0 ~table = data.sheets()[0] #通过索引顺序获取工作表( W5 O D+ A3 w- B/ x
cols_n = table.ncols 7 y! [0 K" Q7 g' d
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名* ~2 d4 }) @, J k# Z& F6 N8 [. f2 M
data_list = table.col_values(1,start_rowx=1)
6 z' G( R; h. i! I1 D/ s# print(data_list)
2 c/ `: p1 T$ M2 L k* g$ _" k
; j) L" L: T% ?. v, i'''
; e3 i5 g9 ?$ n2 w7 N% s 计算角度
* R u) [* P8 r# N7 z, Q'''
2 \6 A. z9 V+ o$ d- P5 E5 rn = table.nrows-1 #去掉列名
7 j1 v" `* g) B8 E+ [! O$ rtheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份$ ? n! j5 f5 m K' L1 x# s( e
O6 f, t0 Z( P6 K7 Q
'''. k8 p4 Z# x! r, f
作图- J6 {1 X* Y. p) Z) u
'''3 f( n& F: E+ [0 q
# 设置画布
1 i) l$ z: `! }fig = plt.figure(figsize=(12,10))/ N1 f- D2 H/ l
# 极坐标
' q9 {* p: C9 u0 S; Z% Aax = plt.subplot(111,projection = 'polar')
1 A4 ~, `8 @/ D# W/ g# 顺时针并设置N方向为0度
8 G" n2 I6 D X- V! C6 eax.set_theta_direction(-1)
/ s/ t9 @8 [3 C4 A7 y5 c# bax.set_theta_zero_location('N')
* M7 ^1 C# v8 o; G3 F
% ~( n# V$ D( ~# 在极坐标中画柱形图" D: g6 @8 m [7 X7 D" X
ax.bar(theta,7 J& }4 S( T% }! g; [
data_list,
$ w/ Q7 z" X7 s* f width = 0.33,, T: Y( p$ F; w; m7 `
color = np.random.random((len(data_list),3)),9 R7 f- V) Y3 @0 K1 p, z+ x6 S
# labels=str(country_list), 4 U7 m! o6 r0 f# w0 p# `& ^
align = 'edge')
7 i* Q" T3 I) o5 y& W* u, T''' . q, A- ?6 R p1 p/ l
显示一些简单的中文图例
9 p( E. K8 U! Z5 t9 r7 ]! y5 g G'''" d, f% D* _0 {
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体# j s7 ?2 Z# C, y
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})* C$ J* V# J1 J+ k1 x5 v
for angle,data in zip(theta,data_list):+ ?) D9 z" t+ W" R: C k- C3 M1 b* y
ax.text(angle+0.03,data+100,str(data))
7 Z. I3 b6 O2 ]+ ~. U8 a' |" b7 k- v2 V5 a- a. p5 S8 \" k
4 ]+ n; ?' j9 W3 Qplt.axis('off')( s8 ]2 |1 r: i0 Z/ u4 j
F/ v }# X) @
plt.savefig('Nightingale_rose.png')
5 |/ S5 V* Q3 |/ V$ B5 V9 Qplt.show()
& q U9 v) q9 W/ I9 F8 w2 {. c S( |2 K: y# U
2 l" z+ u; B/ s3 {5 @" k
2.运行结果( W4 w% {- c" J& P3 z/ p' V
2 Y9 X Z2 e/ w$ G5 I4 M X! u
" Q) j# j* u4 o% o0 t) X; L
3.excel数据表
+ ?* K% R/ ?3 Q5 o! U' \; W/ K
; v! a7 t% Q0 {7 n
1 r8 ?- S( I4 ~2 ~% [# B
4.说明
; b* s" q& o l+ r 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.8 `4 g9 a) r0 p) C6 b+ L x
实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.' C1 M4 s: {8 A/ s
————————————————
" @+ N6 T3 u. x) L+ p0 P版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
0 ^( `" ~4 C: c' e$ J# I, i原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
/ \3 A4 h4 A- X; l6 F f+ Q( C( N
* w$ V- l% A1 @; @7 P/ n
# A; P* v5 ^( G) o k. z7 N |
zan
|