- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566949 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175308
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
$ s$ m* C4 X- c, p1 K. m2 Q6 }python+matplotlib绘制南丁格尔玫瑰图+ d/ F/ X9 ?2 v( U
实验:绘制南丁格尔玫瑰图
v$ J* L5 ?. O& V# ~$ l, C& R 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~) a% k. D* n; m) V0 p1 `
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.; a* }5 ]8 v' M# ?/ z* c3 r
) k9 w+ @" U; q7 V, o
文章目录) r* z* l3 F3 y3 T3 j" b2 w) M
# \' M- Z! }0 H& B! K1 x1 X
一、实验目的# n5 P( A' [* V3 M- S
二、实验内容( b$ k0 d- z$ ?; B' ]2 {+ u: h
三、实验环境& n: c/ A# K6 \ J6 c
四、实验步骤
: l, P% L4 y6 I) ^1 J; c五、实验代码及测试; ` V1 N' N6 r8 t4 c' F$ X: x
1.源代码
) v0 h; _0 r% e: Y0 r) y2.运行结果# N/ G! }# L2 L. V' A4 D! i
3.excel数据表
/ Q/ V4 V3 p* Q$ u4 ]1 d2 f一、实验目的
; N. Z2 \" L& n. p/ R+ Q$ x1 o* N) L
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。( F B, p& [+ K7 T% t ^: l
* {9 t, C7 {) j5 `二、实验内容
5 t6 o: A, S5 ?+ ]9 j+ w Y' v3 u/ {) x7 ]" v4 Y, w* Q5 j) ^
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。7 J! \; F! L% G3 {5 J5 @. P* W% R
自行选择一组数据,画出基础玫瑰图。
3 o: Q( ]( N2 f! v6 e. z" z0 N' y$ j; G# C F2 d' B
三、实验环境
$ Q% k1 a; D, J& D% W! a+ g ?
# d8 `* r$ j/ W9 ~6 C0 f" d. I ython 3.8
/ L9 r+ A: x! t' j$ J, J6 P, t9 ` g: A- @7 L3 b! P
四、实验步骤
5 o/ u* b5 V# ^4 C
; @( d* n8 I+ W; [/ H, `% k# {查阅文档,了解南丁格尔玫瑰图的原理。9 h6 p8 T- T% \
选择一组数据,编写程序画出玫瑰图。
1 r+ u6 M9 o+ s1 L( @/ i8 X五、实验代码及测试- p) Z& B1 S) h- r0 F
7 Y( ]" J9 N/ s, a7 f
1.源代码# I( y9 H) E7 t/ z
9 B! ?( G- K. @( K# Fimport matplotlib.pyplot as plt
3 Z! q m& ~ I4 M gimport numpy as np5 D# t: E; ?' {' v
import xlrd
9 x |. l4 s( k9 F) @: Y4 D. v
'''1 k- }) B9 A2 S
按列读取excel文件并存入两个列表
& _/ g) x g! J'''
$ U# Y: x. o2 [' g7 ]5 tdata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') 1 c+ x( K9 ^( W- h2 p& L5 R
table = data.sheets()[0] #通过索引顺序获取工作表8 J0 y4 i6 z) {( D' d
cols_n = table.ncols 2 z* r- p; z$ S
country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
: T6 [# Y. m L0 u5 U- x3 U9 zdata_list = table.col_values(1,start_rowx=1)3 V/ d+ w: n8 S! x: W
# print(data_list)' R( V1 y& e3 p3 U" i/ Q; l
. ]$ ]$ f* z* j( M'''
$ R- c3 v1 a- T2 B9 e( g 计算角度1 r m' X) s7 |# g7 x4 ]- W) U
'''- i+ [% S0 a+ d9 Q; a$ u& Z
n = table.nrows-1 #去掉列名
" a1 S: r. }" k) x: i; [theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
8 i Y0 x9 E$ Q6 f; d
9 k5 c, g' A/ E6 c'''
( w' S7 s4 `$ s: ~6 y* N) r 作图
* c# ?1 I6 [/ j- n5 p'''0 S9 k6 U+ V+ a j
# 设置画布6 S( c6 `/ G4 F( L4 U
fig = plt.figure(figsize=(12,10))! d0 R+ @: \ i* Y5 ~
# 极坐标
5 L( F9 T) A# s9 j; z) V$ Uax = plt.subplot(111,projection = 'polar')
u; @$ P4 ^' n* S2 z; O# 顺时针并设置N方向为0度
" K# D# ?8 j, n& {) C# H `- u* f8 rax.set_theta_direction(-1)2 O2 K/ C% F, X, X
ax.set_theta_zero_location('N')
! }1 `) N: r- g! k4 o7 d& n5 C4 d- f. L# g/ V
# 在极坐标中画柱形图
8 ^+ C$ D! `' e3 Gax.bar(theta,* d9 X/ j, m x- d' O. v: `6 @- x
data_list,
+ S$ Z. N# Y2 ?7 F) g% j width = 0.33,
$ z% C) _, v L. g" s3 A color = np.random.random((len(data_list),3)),
6 @( d1 t2 F% X # labels=str(country_list), # L* A2 a% u% a6 ~! n) _6 x0 A
align = 'edge')
; W+ W" Q; d0 a% A. Q+ D& `' [. _'''
" K0 c8 A( _+ f( ~6 }: k 显示一些简单的中文图例
) k% O% m3 u! v& j, b8 y'''
- e9 S+ V: f4 R7 C/ ?9 \# _ Tplt.rcParams['font.sans-serif']=['SimHei'] # 黑体1 |9 ?" _* H( r( ? B& G
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})
& y; `7 A, n0 s) a- |for angle,data in zip(theta,data_list):
! L( I% D O. @5 c! g ax.text(angle+0.03,data+100,str(data)) " e. @* ^1 Q1 X% j/ D8 T
5 [, l T/ ?( K: X8 V" Q
3 R/ ]2 W7 [/ T$ O) c9 F2 z
plt.axis('off')
! u$ E) f5 D! S& O0 Q8 R
$ A" Y* y4 y: u' e# zplt.savefig('Nightingale_rose.png')
% [: X. j5 N5 D7 K( o! F: G; [4 g5 U+ Rplt.show()
# o N8 L# V. z" S9 n! Z! d" [5 q+ r
+ q5 D2 h8 u- N2.运行结果
7 v6 m. `& S* i* B1 S0 k
6 {# ?# ` U ^ M q' I7 R
5 E. M, y/ y5 P
5 N8 Y3 C! Q' B/ V, i0 `/ Q* H
3.excel数据表) o" z3 X2 g* Z- F
* h7 c8 X2 J* l' }- n7 H9 [
9 l2 ~& P' u- S. l3 K5 R! A2 l* V4.说明
& t6 i* |0 X3 c( C" q8 t. \ 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
) n y3 B# {8 ~$ q. L* ~ 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.* l3 b, ~& V1 q, Q/ E- f" E1 }
————————————————
/ M1 l$ g$ t7 Z7 J版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 t" W) [& Y9 Z$ z Y% X
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852( E) Z4 t6 j$ M1 |* u2 b
4 X5 F1 `# k! p0 r4 ^$ D3 _4 {. X# K& @/ P+ l# d3 X
|
zan
|