- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566910 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175296
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
' E. O8 {$ {. q! _$ ]6 q
python+matplotlib绘制南丁格尔玫瑰图
6 B+ x1 }% n; Y; p6 Y( ]- r) F实验:绘制南丁格尔玫瑰图
( L# C P% A* H( V) w$ l 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
# e8 a" C' X! Z 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的./ K6 o0 R& P) J
z, F. E2 Z; S文章目录
( \6 U1 H2 |0 z- N0 \6 D. R. P- i' @6 v! H5 ?6 w1 e8 j, b$ d0 Q
一、实验目的5 J/ |9 y: J& r D# p
二、实验内容8 }0 N, z0 m* Q8 N# O; H0 l/ {! R
三、实验环境; f+ k5 P. W* M: w
四、实验步骤8 B& X2 C8 f* B; h" S( B/ ^
五、实验代码及测试
0 J4 B4 I5 ]$ [7 o m2 o7 [1.源代码6 r' e9 n5 E8 _9 s+ r
2.运行结果
% T( I- ^( e& W+ t! _, W: ?3.excel数据表: n( s# D( l- i" f( V3 i$ c* D( s4 L! ?
一、实验目的6 C' ?; m; q1 r: I- [/ E3 B# v
) M- W. _6 U. o 了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。
$ k6 i' O2 ?6 Y k) u) ~3 p7 k
8 [5 K' P7 l9 v& f* Y+ z5 W# j二、实验内容
. u$ @* P( e7 l; u( X' S8 R7 ~# O5 e$ |
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
* S" y, Q0 ^( u: V1 P) m8 D: T 自行选择一组数据,画出基础玫瑰图。
2 w% S1 O5 t' {9 Z' S# u+ x; J# S+ `" Q B+ B, A2 u
三、实验环境' X0 ~0 U% E" k. `
) P2 N9 G5 I: b1 p4 \0 y3 ] ython 3.8% c, Y/ V; W/ n7 ]
. k! i' q/ ]6 |" Q% w% D% p四、实验步骤
# z$ W/ K9 c; x# g0 o2 C r0 b' O! v- X1 g$ d
查阅文档,了解南丁格尔玫瑰图的原理。
, o$ B6 K( a( \( T2 k. [6 d选择一组数据,编写程序画出玫瑰图。
. f! F! X2 \& d0 S2 e' E五、实验代码及测试
, ?4 |" B" k/ i1 h" |2 j2 B4 F$ T1 x3 R: v; x( K3 y- s0 T; u
1.源代码
8 o, f4 C6 t2 }5 t. `: R9 y$ o* [8 G
import matplotlib.pyplot as plt. S' B" }2 q9 h0 r9 D+ N" n P1 X
import numpy as np
6 S" G6 j4 B+ \; C# S" Nimport xlrd3 `! n- x# C* {4 \
0 c; |1 T. @3 n# p'''7 J3 O. c( T3 J% w6 E4 u! x
按列读取excel文件并存入两个列表$ a. ^: s+ k: p' G$ j2 [
'''& k M y7 ~! E9 k, R7 W, l
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
/ r5 i+ K. O; dtable = data.sheets()[0] #通过索引顺序获取工作表 J$ p9 E. B# I i7 K/ |
cols_n = table.ncols - O) c3 T7 H2 d' ]
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名% R8 ^5 ^8 _9 t+ \; n) U# r+ T
data_list = table.col_values(1,start_rowx=1): F$ M- _. A) _5 R- r
# print(data_list)9 N! [5 l2 u {7 d4 d6 G
& M6 ~7 B1 P9 F7 a; \0 k
'''
9 [4 U8 Z; g7 f 计算角度3 w% ?0 o- h$ A
'''
* i4 L% I* d5 p# ^n = table.nrows-1 #去掉列名7 H$ |1 O7 n. a1 y" u& P
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份9 x$ P' Z! ?9 R% k+ B! P
4 U4 ]7 X, q( k [* ^'''
, D0 I3 o7 c* d/ `6 U 作图+ K) _+ W" z! ~2 V' q( H
'''% H# J: X; t: N; w j y2 M0 H4 k
# 设置画布8 p( ]% f# A, f% X+ J6 l3 h2 x9 g
fig = plt.figure(figsize=(12,10))4 a; u: _4 k9 ]8 w W
# 极坐标
! I6 M& r+ o4 N# m% W* w% uax = plt.subplot(111,projection = 'polar')
* s% h. m! H/ v) O0 w# 顺时针并设置N方向为0度- O3 w( C; R3 z& L: M& ]
ax.set_theta_direction(-1)0 `, C: r$ O0 v' o& c4 F4 P
ax.set_theta_zero_location('N')
, c/ H# A. q8 r) v, ~! H( l* z% m5 X/ o" X1 F$ \9 S: |! e; b4 |
# 在极坐标中画柱形图. _6 }/ P$ V% G3 |$ R* R7 ?
ax.bar(theta,- Z- k# f4 k: v- p" f9 _4 d6 r
data_list,
+ F& t0 o' c+ v6 u( G% {) s- o$ b width = 0.33,9 U3 X9 x0 ~( A2 A$ @3 S; B
color = np.random.random((len(data_list),3)),! r- m8 I) V3 L
# labels=str(country_list),
: N' e4 [9 [2 l( x9 x e align = 'edge')
/ ^( R- Y- [- y3 ]'''
7 Q2 x! ]; f. [$ v2 C% \ 显示一些简单的中文图例
. P5 |9 N, O" G1 ?, v2 k. l'''
! s& U8 O4 j/ }5 u3 B; Y; Wplt.rcParams['font.sans-serif']=['SimHei'] # 黑体
4 O& G) ]1 f+ Wax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})! S2 [! q3 k( c- u! T- p
for angle,data in zip(theta,data_list):
+ g, B) M) G$ }' P- l ax.text(angle+0.03,data+100,str(data)) J9 X' d# x2 n2 F/ _& S0 g
3 C3 J, _: C$ p) B( h
9 Q: G* a9 F/ [6 b
plt.axis('off')
9 J3 S+ }# b0 U& q+ U( t5 @
0 a1 i) `+ Q8 i k& l6 I$ n5 [plt.savefig('Nightingale_rose.png')
$ v( b; j+ K! ~4 jplt.show()6 L% Z" L5 J6 s$ |/ @0 A+ a
& s$ V, h" O' p _3 l3 j# N
" b0 H4 {5 z9 c* d1 p
2.运行结果
6 P; Y2 E' j$ G* j! L
$ E8 L! d! j- [% o7 f, F, z
4 f) O0 v. p3 ~
: {& [3 I; f6 g2 j+ W% Z3.excel数据表- \+ b) K$ j, s, W) z
4 s# g1 n" y) j0 P1 S- ]( |; \! r/ ^9 }7 n
4.说明7 q/ [# U2 \" f7 L/ [1 K
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
6 b& X0 c# P3 ?' c! E/ I% l 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.1 U3 y& B4 `9 B# ]8 r2 Y; j1 ^1 z
————————————————
, p3 g4 m5 [" a0 I: l版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ n5 [% P$ R) z! ^7 S% r
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
* e1 p0 B/ I3 W3 T5 J! q8 S( g2 s- {0 |0 j! h8 ^, ^; y
* J% u8 x: B- ]% f1 {0 f& a% J |
zan
|