- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 81
- 收听数
- 1
- 能力
- 120 分
- 体力
- 539941 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 167361
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5324
- 主题
- 5250
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
5 y* h; s- ?& T0 K' bpython+matplotlib绘制南丁格尔玫瑰图/ @4 s% o {/ Z8 `/ z6 W2 Y
实验:绘制南丁格尔玫瑰图* L, \6 U4 Q' } q a$ D# _
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
: U* m7 x; ?; I8 a 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.
% ]% x! c' g+ k7 a$ X0 H
; d0 \/ B$ u m. L" _文章目录
3 ?0 s8 T% \4 I. z V( {& O7 K+ Y2 B" F q
一、实验目的
% o% `, u9 v7 `5 b二、实验内容4 f% ]/ `! c i: \. E* u
三、实验环境/ s, f2 y4 @4 |; O7 L
四、实验步骤
5 q1 B( P, q" @6 J2 x五、实验代码及测试
$ j: ?& |7 d$ y; R! L! P$ x ` a* K1.源代码' ]" u3 p* h0 l9 I' l" s3 Y2 ~/ a
2.运行结果
6 x; g( q& y3 [: P3.excel数据表
" a+ c' B! d# I% K) t8 L一、实验目的
0 }6 l) W: J& Q* `. E z Q- D% ?5 ^$ M7 g
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。
6 n+ g" k# _* \. K) y' \1 s' ^( V& _0 I/ f# L) I3 I7 [
二、实验内容
3 _6 C" |' [# l# I8 h: B" q
1 q3 w: c8 }$ s, h9 B 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
; S/ ?& [) u7 Q% ~% `, o 自行选择一组数据,画出基础玫瑰图。' S+ i" X. n/ H! b" @- _
; E& ?8 V. F0 r8 R
三、实验环境
5 G+ k2 J/ {9 q5 g9 v
) e% T. _' [+ q4 J6 y. S ython 3.8
! J1 c2 a: H$ W; b6 {1 Q( C
$ ]0 X$ D6 t |4 g! \1 Y$ V四、实验步骤
7 K, m, @& W. u5 n& V7 W7 Q5 k. o. E) C+ @ e+ y
查阅文档,了解南丁格尔玫瑰图的原理。' g x5 _& b% H0 |$ {8 O
选择一组数据,编写程序画出玫瑰图。
: j7 e* K) |" I) E2 C ?五、实验代码及测试2 f1 S% l0 v5 E2 B; u9 b
3 f2 t% W. z7 D- B
1.源代码
# O! J) | u* ?" u I4 ~5 k& n1 c3 P
% I! {+ f! C1 e' Y6 Q/ o* cimport matplotlib.pyplot as plt/ C" G$ H6 x. y8 m* C
import numpy as np
# |1 \9 q! S+ O8 d Uimport xlrd1 \% I3 i" H1 U) q1 \$ i
# C( D9 D& }8 K7 z7 y+ E$ R'''
8 o. A# x1 z: ~1 o) y& j& s 按列读取excel文件并存入两个列表
% k& q9 c2 e" C* b9 ?0 [# U+ Z'''7 R3 @! ^. l- A) }; d0 b
data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx')
$ S1 O% C ?4 c: btable = data.sheets()[0] #通过索引顺序获取工作表% r, x5 a7 y7 A: }6 o, ^! h" V% o
cols_n = table.ncols
5 S1 l$ j) d A- w( B$ {- ^country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名) b2 e' {7 g/ l1 O, k" o8 Q5 E) N
data_list = table.col_values(1,start_rowx=1)
2 i- o. K7 ~0 Z" v, S* |; u3 A# print(data_list)
$ g+ d/ D' Y: Q4 J! B+ B4 m5 E* l% J5 \
'''" G3 n3 W8 m& ]: c2 Q( N
计算角度/ o0 c1 c' H- R2 w7 Y" S
'''
$ V, U( v( `, Z2 S$ bn = table.nrows-1 #去掉列名
; u# b( m- R) u! j8 atheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
6 t5 g8 L5 B5 G2 N, Y6 {, C$ J- a a1 a, M& d1 G6 Y
'''
7 }) X- P" b) g6 q9 P& S 作图6 Y2 h8 E) b. g
'''& p9 G5 G. P: H9 @# o% f$ {
# 设置画布
: d: E9 }; h/ p/ yfig = plt.figure(figsize=(12,10)). J5 h- P9 ?( P' X7 M- V) Y
# 极坐标
( q, ` z) e6 s0 H9 c0 `0 ~ax = plt.subplot(111,projection = 'polar')
# Y; g3 I$ v) d( V5 _6 [# l# 顺时针并设置N方向为0度
3 f# H! x6 I( I9 T7 w5 U2 Qax.set_theta_direction(-1)4 b- t- y& e- z! l
ax.set_theta_zero_location('N') 5 ~% O# E/ S* {. v* ~5 D
e9 j# Z7 Y: E# 在极坐标中画柱形图, G' H. e& O+ o
ax.bar(theta,* h( O% A* B5 ?6 ]& |
data_list,7 D# S4 @, P1 ` K7 a z
width = 0.33,
" K$ m Y9 v. n7 N( ~5 h4 w color = np.random.random((len(data_list),3)),
6 [) s1 R) S q # labels=str(country_list),
" S+ g) l5 d* A- C& b align = 'edge')
) Q7 z3 m! V/ z''' ' \% ~( w" M5 q' {7 }, m' r
显示一些简单的中文图例$ L' D! L6 p" S5 u: G
'''
h! M4 `+ J. v+ A" `( Rplt.rcParams['font.sans-serif']=['SimHei'] # 黑体. @3 W/ Z h9 o+ ]2 m6 g3 l# l+ \2 e
ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})0 A( e( ^' w( \5 ?) Y4 L, Y. y
for angle,data in zip(theta,data_list):; A( u0 P$ m4 ~
ax.text(angle+0.03,data+100,str(data)) 7 h) H l8 N t5 R$ x% E7 U
# c( x) V& \$ {+ R" [
0 B' ?) q) D7 Q7 O% p5 C0 S; wplt.axis('off')
* z" r, v I( H& w. J9 R3 Z4 G9 {7 u" R1 R
plt.savefig('Nightingale_rose.png')
; f5 `. l& Z# M& rplt.show()3 m) _# I* {7 k- M8 \
7 H0 N* ]! Q6 ^- W, Z+ i# ?
+ O% K9 ]. Z( l" E" j* a/ r2.运行结果% Y, R! m6 {; q5 V6 t/ `
7 ?( _! k3 ]6 E( a+ m3 l4 W, G
/ k- F0 F! r/ n9 q+ ?5 `1 Q7 P
) h8 ^% [! \1 r: J8 Y, y( W3 f3.excel数据表+ S: R3 e/ y6 N3 T0 f
$ q, N* J/ K9 w: x0 u/ z& R
, S# H2 N; k4 ^; N7 ^: [
4.说明9 _* k6 V0 G9 A0 V% q
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
1 b7 v: O! b( V& J9 s. l 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.
( q- w8 [7 \4 ?% s v————————————————9 X4 f ^% a* ?# f8 K" x
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 {: y, b* }7 }2 Y4 Y0 O
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
8 K* q" E+ u8 g `
# H9 W0 e- ^, R! p* c9 R: J( w- a9 u5 t- F" o4 t' ]5 a
|
zan
|