在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 559387 点 威望 12 点 阅读权限 255 积分 173189 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 18 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
1 a7 E; X& R% z% s1 b% {; d* v6 B" ?! O python+matplotlib绘制南丁格尔玫瑰图
$ G( r# E p8 H8 w/ e 实验:绘制南丁格尔玫瑰图
1 T) Q9 ?+ y: J# G* u% B$ N6 b2 O 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~4 R! P6 W( r4 \# X5 J
无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.7 t; E2 H& Y' k
: ]+ Y. ]( r0 h8 |% T 文章目录" W# X. u- W/ P4 u& n
: {. b" z9 s3 e8 _ 一、实验目的' q3 J: j. f# w' a9 ~
二、实验内容 _8 x$ K% S. X- p+ M
三、实验环境
4 x/ { ~+ |- G9 V. v2 m 四、实验步骤: T7 A' @2 |, C" _2 [% ] `
五、实验代码及测试
/ _: T9 o5 u6 r! C6 e, v 1.源代码
, f7 N6 E0 D: I0 g Z, H 2.运行结果
* t$ I) J# @4 D: V, E 3.excel数据表3 D$ D! W" A1 b$ Z
一、实验目的' O7 ]" E! Z7 h+ V' Z# j" B
2 w8 [1 x- D+ ~ 了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。
$ Q! K; X6 B$ j" L & O/ h& ?2 m" N/ r0 z( g8 Y& _
二、实验内容, V C" O) T7 P/ z: w( b% u
% Y' L6 b4 ~6 V. Z ?- r 南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
# c6 u: J6 `+ w/ x& l2 T: P# |3 J3 w 自行选择一组数据,画出基础玫瑰图。2 F J x# Z+ d- c1 L) b
' N8 X+ V& m8 e3 I3 ?' w- ?" x 三、实验环境6 W) _2 g6 y+ d8 i) f0 M
) ~- ^, W! I) M- G5 J
ython 3.8 p: b& l9 P3 L3 o7 Z* |9 L
0 M7 u) ^4 s$ ~7 T5 { 四、实验步骤% E/ D6 ]3 \* \; x2 h
2 A- \+ e" A+ U' S+ \( | 查阅文档,了解南丁格尔玫瑰图的原理。
, \, ~+ R1 R. x5 @' D 选择一组数据,编写程序画出玫瑰图。9 Z7 y( F2 p! x6 c$ t$ k3 L
五、实验代码及测试
8 o4 k1 n' |3 E
# Z- g7 V/ H5 X: V# s1 z4 r/ [- @/ f 1.源代码
/ v# D! k3 ]5 k& R4 j" t
9 m) T8 |5 t- r& N0 V1 G4 S& [ import matplotlib.pyplot as plt3 v5 g% T, f. y- E) h
import numpy as np+ K' P+ v& r, P- }. d
import xlrd
* |6 P% X7 w. Z% N
5 A& v5 P6 c5 U, b- P% [; x '''
$ F+ _9 [" r* S3 z( z8 M 按列读取excel文件并存入两个列表6 e- t g, x3 E# _9 o, Q9 q
'''
6 }1 j8 V! U) Y% z data=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') ( P* E+ h3 J" R6 e3 o
table = data.sheets()[0] #通过索引顺序获取工作表$ t* g l# e7 r$ x# R" t/ D- m
cols_n = table.ncols
; Z' A4 X Y" s" ~1 o country_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名" t$ I! I: Q& S0 I
data_list = table.col_values(1,start_rowx=1)
& W' Y$ R3 O v L# g # print(data_list) f7 u* d& i4 p6 _: Y% L
( I8 J, U1 P* b% Z+ W/ U
'''
9 Q, r% a+ ?/ b D9 Q 计算角度; O1 C/ @0 w+ O6 i0 H& W
'''
+ p b* T. q! L, V5 {# ?: Q" t n = table.nrows-1 #去掉列名
3 a! E. n/ z1 A( @$ g: J. Z theta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份4 S3 }- b G- z. t1 S
) \- P+ ]* g0 R# n
'''/ L# Q: P! ^8 P1 W) B" D
作图 ^0 }) W/ c3 T. R! l
''') {7 X3 n4 j, l/ @1 M
# 设置画布
2 P1 g9 n+ r( v' f. d! x fig = plt.figure(figsize=(12,10))( D; g$ J8 m/ ^4 p
# 极坐标
' f0 V- I' L# d! q" L ax = plt.subplot(111,projection = 'polar')
' }( P% X+ U+ i }! Z$ R4 U # 顺时针并设置N方向为0度3 N. t$ o+ T+ Q# I5 B6 B; o H
ax.set_theta_direction(-1)
+ J- f& Y# [+ x* L ax.set_theta_zero_location('N')
. @5 f7 v! Q8 G* F+ V0 ?7 q' m4 D 9 ^6 G1 Z8 _0 i) s+ c
# 在极坐标中画柱形图3 J% }5 ^ _* b0 a
ax.bar(theta,
m' U3 T* n6 ^5 o data_list,
5 s7 A% e, i' m* V6 s1 F width = 0.33,1 p3 F2 B* V2 D+ ?. S: R
color = np.random.random((len(data_list),3)),8 s$ c4 e; Z! \ s( h) x/ {# @
# labels=str(country_list), : M+ b i) e& c
align = 'edge')' ?) v, V+ B( c; Z' l' t. S
'''
. O3 ~. v0 m9 W- K5 x8 ^) q# O 显示一些简单的中文图例
2 N9 g4 y& ~: C% _ ''' M+ e/ h! @* X7 P6 b
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体
+ \4 V% k e4 e5 i* z. a- p7 [ ax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})# K0 K3 n' ~4 u+ J D& d8 V+ j
for angle,data in zip(theta,data_list):
' G( k p; c+ ?* @. s& A" y! L ax.text(angle+0.03,data+100,str(data)) 0 X8 d- z# Y! ^# X& j) \
7 G% M( `) b3 V6 L8 z/ W% j
# K0 m' |; x2 L8 N" ^4 k plt.axis('off')
5 c8 J* ]4 {4 O% y! _! S2 i+ o
/ N# H6 q0 u) T6 X3 j8 j plt.savefig('Nightingale_rose.png')
& V" D# {& a. d, b% _ plt.show()
, g t: ]3 l: c) h0 [' q. O% S # _! S' R, s) _/ P) J& p/ i! R7 L
# G3 P9 N! q, h# T! g& T! y
2.运行结果
% y0 u& U) E, _6 t V; q" x
) n! a9 k0 C M3 I4 L
$ F: \4 I/ z: z1 S. Y& O P
. v. Y4 T7 v( N" k( {. ~7 u 3.excel数据表
% l: i! q4 x" }- ^& W6 i n
H* }1 W- W& h1 n; [
3 ~4 ^' H `7 i 4.说明4 N( M- H/ c# S4 n: `- d
四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
* t/ Q9 y& D0 `( B! S2 B, h3 ?. ^ 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.6 |3 E' E. m |* k' D/ ^% ]# D
————————————————
9 |/ F, i& h1 ]7 B2 Z* W0 g; o 版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
! F: X9 m$ p3 p s, N 原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852: @2 N5 w3 J8 }* K
1 v2 X: [5 Q% Q# U$ D& }# q7 q: \: `
. ]. W6 H4 q: O& D+ L; S
zan