厦门定制型网站建设,临沂网站建设方案书,网站开发岗位思维导图,深圳集团网站建设我们继续来把简单的图形丢到极坐标#xff0c;这次是气泡图和柱状图#xff0c;临摹的对象是澎湃美数课这个图看起来很好看#xff0c;原理其实很简单#xff0c;把柱状图和气泡图从笛卡尔坐标系中转移到极坐标系中来就OK
我们开始本次的临摹吧
本期的主题如下#xff1a;…我们继续来把简单的图形丢到极坐标这次是气泡图和柱状图临摹的对象是澎湃美数课这个图看起来很好看原理其实很简单把柱状图和气泡图从笛卡尔坐标系中转移到极坐标系中来就OK
我们开始本次的临摹吧
本期的主题如下熟悉一下柱状图的一些参数
熟悉一下散点图的一些参数
熟悉一下极坐标系的规则高中内容啦
熟悉一下这么自定义字体
熟悉一下网格线
我们先来说说及极坐标内一个点位置该怎么表示笔者很懒惰就直接从网上复制图片来教学了
从图上可以看出来x轴为那个带箭头的线matplotlib中也一样极坐标的起点在同样的位置不过在matplotlib里 x表示的是角度y表示的长度所以确定好夹角θ和半径长度就OK
我们在看看 美术课里这个样图一排上一共有15个圆且最后一个和第一个没有在90°与270°的位置上所以我们要把圆分成36份也就是每份是2π/36
这样我们就可以确定等差数列了我们以3/2π为起点不断加2π/36
我们来画第一圈圆
import numpy as np
import matplotlib.pyplot as plt
S1np.array([2572,2483,2302,2125,1990,1853,1694,1400,1134,982,869,776,668,584,480])*2
#为了把图做大一点把圆扩大了一倍
x1[(3/2)*np.pinp.pi/(len(S1)1)*(i1) for i in range(2*(len(S1)1)) if i
# len(S1)1 等于16 因为python里计数从0开始所以i1起始加一
# 又因为我们只有15个圆所以我们生成的位置Y也只要十五个所以加入限制条件15
y1[180 for i in range(2*(len(S1)1)) if i
# 我们继续生成15个y值这样一来我们三个参数都确定了气泡了x轴位置y轴位置以及气泡大小
# 下面开始画图
figplt.figure(figsize(13.44*2,7.5*2),facecolorw)#建立一个画布
ax fig.add_subplot(111,projectionpolar,facecolorw)#建立一个坐标系projectionpolar表示极坐标
ax.scatter(xx1,yy1,sS1,color(180/255,204/255,30/255),alpha0.5,linewidths0) #不要气泡有边框线我们把linewidth设置为0
plt.ylim(0,220) #限制y轴的显示大小
散点图的参数
1. xy表示点位置s表示点的大小
2. color表示颜色可以传入一个元组对RGB值归一
3. alpha表示的是透明度第一圈圆
S2np.array([2028,1976,1962,1925,1904,1833,1730,1577,1524,1493,1475,1589,1511,1505,1524])*2
x2[(0)*np.pinp.pi/(len(S1)1)*(i1) for i in range(2*(len(S1)1))]
y2[130 for i in range(2*(len(S1)1)) if i
我们用同样的方式计算出第二圈圆的位置画出来
接着我们把柱状图也丢进极坐标掰弯
柱状图可以用四个参数来确定每个柱子的位置
H1[56,55,54,52,51,50,49,47,43,40,37,34,31,28,24]
W1[0.05 for i in range(2*(len(S1)1)) if i
B[30 for i in range(2*(len(S1)1)) if i
ax.bar(xx1, heightH1, widthW1,bottomB,color(255/255,171/255,1/255))
x表示x轴的位置
bottom表示柱子最底端的位置
height表示 柱子的长度
width表示柱子的宽度
最后我们把 坐标上的线还有坐标轴上的文字去掉以及背后画个网格线
ax.spines[polar].set_visible(False) #去掉坐标轴的为外面一层 粗的线
plt.grid(colorgray, linestyle:, linewidth1,whichmajor,axisx,alpha0.1) #添加网格线
ax.set_yticks([]) #去掉 y轴上的文字
ax.set_xticks(x2) # 应为网格线是跟着x轴走的如果去掉x轴的话网格线也就没了
ax.tick_params(axisx,labelsize0) #因为我们保留了x轴x轴上的文字会存在所以把x轴上的文字大小设置为0
最后我们选择喜欢的字体然后打上数据标签并保存
import matplotlib.font_manager
fontmatplotlib.font_manager.FontProperties(fnameD:\\Fonts\\English\\Museo700-Regular.otf)
for i in range(len(x1)):
ax.text(xx1[i],yy1[i],sS1[i],colorgray,hacenter, va center,fontsize12,fontpropertiesfont)
for i in range(len(x1)):
ax.text(xx1[i],yy2[i],sS2[i],colorgray,hacenter, va center,fontsize12,fontpropertiesfont)
for i in range(len(x1)):
ax.text(xx1[i],yH1[i]40,s{}%.format(H1[i]) ,colorgray,hacenter, va center,fontsize12,fontpropertiesfont)
fig.savefig(D:\\test.png,dpi400,bbox_inchestight,transparentFalse)
裁掉不要的部分
笔者比较懒惰就在搞那些文字与标题啦如果要加文字与标题的话可以保存eps格式的矢量图文件放在AI里进行深度的加工和处理哦
就这样 完结 撒花✿✿ヽ(°▽°)ノ✿
基础的部分可以看看这个文章Mono LeePython入门向:Matplotlib自救指南篇从此做图不求人(一)zhuanlan.zhihu.com
其他在极坐标里的画图可以看看这个Mono Lee用Python把图做的好看点用Matplotlib画个环形图zhuanlan.zhihu.comMono Lee用Python把图做的好看点用Matplotlib画个玫瑰图zhuanlan.zhihu.comMono Lee用Python把图做的好看点用Matplotlib做个像麦肯锡一样的条形图zhuanlan.zhihu.com