- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 560062 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 173391
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
2 J% \# r! C! ^" [: E/ | kpython+matplotlib绘制南丁格尔玫瑰图. ~( u" H, U! ]' Z; M' d* p# f. }
实验:绘制南丁格尔玫瑰图
( e0 ?( f! P& r 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~1 o; A4 X8 Z" b8 D. R1 o: Z, g
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.. K! U) ~& j+ r3 v
* w3 ?( V# ^2 K/ Z1 `- n' r文章目录7 l% {8 }7 g# l4 K3 z7 A
0 ~" S8 `, N4 g
一、实验目的
2 h( ?; q0 a% s二、实验内容! \% {$ T: y7 J9 ]$ L
三、实验环境3 b( c1 L# p/ k( [/ \2 [9 t
四、实验步骤
+ x( Q, i: U' F' S五、实验代码及测试
# C- i* N2 z: \1 A$ W% |1.源代码2 ?2 {' P8 {8 e) U$ ^) p
2.运行结果
5 i* ?* b- N. F$ i4 B3.excel数据表1 B; m9 `6 [8 r# s: D' Q( ~
一、实验目的
% ?4 H9 ?* N8 c( Q' S' ?1 t" n( N3 l, a
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。
2 R8 Q. \. |' H2 x
, o6 Q) U! u/ H: P) ~$ `二、实验内容5 `3 e* W! J; ~! s
3 e6 U8 [" A. g$ A; O 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
& G, L8 H- k% |* w3 [ 自行选择一组数据,画出基础玫瑰图。
( T% G% |3 F" W6 w. s" @. v+ q, G/ r& S) Z+ d! R: O
三、实验环境* R7 l" x9 H" M6 e5 A
M( t `! b1 {8 V& \3 J
ython 3.8- [2 x8 `1 U$ ?% G* X3 T
9 c5 ~" G5 L3 x ^2 S四、实验步骤7 s; n" e; N1 e6 O
: c2 o. F) h& Y; L, |. n. N9 S
查阅文档,了解南丁格尔玫瑰图的原理。, ]) O- U3 ^5 I( l3 }
选择一组数据,编写程序画出玫瑰图。
- I+ X$ }, C3 {; x五、实验代码及测试( R: A L. b! U
+ O* ~2 ?) V% v, H4 S+ b; `
1.源代码( |9 T8 n( I& b$ y5 ^9 j
7 W* U' V# [1 d+ \4 w1 ]; Rimport matplotlib.pyplot as plt g6 n. Y6 o5 b$ u% `3 w; f
import numpy as np
& y& h5 L- K& o; p" c8 X& `import xlrd! Y9 d$ r" G6 y' g
- ~* g- u8 S4 u/ ]6 |! G6 b+ O'''
" h" @; k% o: N+ ]. Q+ X: W$ s/ e 按列读取excel文件并存入两个列表
4 t- D7 p+ u5 O1 N( m'''
[7 a# m2 `& H' h& Kdata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') . K! ?% m6 a6 G7 m7 u% N, X* ?% f# V$ i
table = data.sheets()[0] #通过索引顺序获取工作表6 l F2 m! o, R6 S0 M- p9 _5 I
cols_n = table.ncols
4 w- ^1 |. P; p1 h% h' @country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名% i" r+ H9 @% [( ?( ?. e; X' `
data_list = table.col_values(1,start_rowx=1)
1 v: W) T/ x7 p0 z6 ?# print(data_list)9 {4 a' m/ [$ G8 X0 B8 q# {
. E) x3 T1 K" j& S'''1 M g8 x, G1 `! q2 G7 Z
计算角度
0 X& z) t$ A" _" x'''2 w8 g+ D3 ~8 x$ m' O* V* e8 ]
n = table.nrows-1 #去掉列名" q% G3 D% x1 |2 @7 O* m, O
theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
% X5 k8 ?( O8 k& g h
: z$ E4 T7 ]9 ^- W0 q* S6 A'''
' V; ?" ~2 k, z u7 U 作图; Y! G) x/ a8 a( v5 D; b& ^- s" M8 _
''', I7 @3 Z5 h7 ?4 b
# 设置画布4 f- ~3 s% M" r, {
fig = plt.figure(figsize=(12,10)). I S4 Y, e( |+ o* Z* r9 [0 q2 ^
# 极坐标
8 i' _" c0 `2 c9 C% S, A0 xax = plt.subplot(111,projection = 'polar')
6 G [, M% O U0 l$ u, g+ F% P# 顺时针并设置N方向为0度6 |$ c+ _* d' c3 ]+ G# p
ax.set_theta_direction(-1)
- i* J! C. Z8 O$ l* pax.set_theta_zero_location('N') 2 l9 x7 F7 K9 Z
4 t! E6 S# \' X( k
# 在极坐标中画柱形图
: I) \! ?0 h0 j/ a! x9 Oax.bar(theta,
$ N6 I: G; |: ~' b data_list,
6 N1 p7 m7 S( A) Z4 l" \ width = 0.33,/ x8 r* m% S, S) D6 p: |2 C
color = np.random.random((len(data_list),3))," C) ^9 e% f4 M$ ?& y. I$ k F
# labels=str(country_list),
/ g5 d8 r3 @3 }! G& x/ T align = 'edge'). L6 c7 l6 e( h& m" J8 ?4 S& g& `
'''
5 b( s& d8 H6 l& Z" j4 O: T 显示一些简单的中文图例1 y3 |5 D1 [, ]+ q1 o
'''6 Y9 x$ {! h' j/ B
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体
3 j3 ~. T& o" F4 hax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})4 O ?: i9 A% c# g7 l! D' k
for angle,data in zip(theta,data_list):
, m. `6 t# A0 ?6 N5 a ax.text(angle+0.03,data+100,str(data))
$ K( L5 s6 l, Z* A/ G) h
/ h; R0 Q0 j. J. i8 k8 k# {6 _9 g9 n1 o) Z3 ]' ~" l0 ?7 e
plt.axis('off')+ w& V w4 C$ n$ \
# K- \( g; z) H$ j L! T
plt.savefig('Nightingale_rose.png')2 V' L0 k* ~$ u6 T
plt.show()
( p1 R. U$ K6 O' z, K! J
6 K0 x- O' n/ w7 S, x2 h9 o
6 j% z5 Q, k0 e# f2.运行结果! H# K# s! Y- i) [. A. u" V$ i
; g7 y7 o' l' \( m) b4 B8 Z q
, K3 K. X# m2 K/ }) O* B5 A+ A! {) c: X9 R" W9 `! u# {7 m) |
3.excel数据表% v% r7 m# b' c8 l
! O! h( F% o! C7 t- s8 s3 X8 W+ D f
+ n8 W; E8 ~& |! |0 X! i4.说明# t9 A+ |/ M% M
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.6 E/ l' H" ]* w! d" P4 q
实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.
" l0 H, l! _' U% f1 } U8 A! s; K————————————————7 p+ k0 @! i* i: P2 f7 n2 a
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。' W4 T3 i$ b; l' o* a) @) P G
原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852
/ N+ V/ Z5 v! f& }: h/ x- u) h4 z9 e' ~
& B* T% a- G5 z0 M: D5 H, e% O |
zan
|