matplotlib(bar chart on polar axis)极轴图对数坐标的使用、极轴图、极坐标图、极区图、极散点图画法

matplotlib极坐标图、极区图、极散点图画法

对于小伙伴想要了解极坐标图、极区图、极散点图画法可以访问下面的链接,因为论文画图所需,所以有百度了下这方面的资料,在此我做一个小总结:

极区图的对数坐标的使用

不知道大家在工作或者学习中,有没有碰到过数据相差特别大的时候,要怎么画图,如这两个数据:0.01和100,当我们画图的时候,就很难看见0.01这个数据在哪,或者如果0.01代表比重的话,我们画完图几乎看不到其比重,因为被忽略了,那么问题来了。如果在画图的时候,我们想看到0.01和100的分布或者是贡献的话,我们要怎么办呢?这时候,对数坐标就起到了很好的作用了。

普通的散点图的对数坐标

在这里,我直接附上代码,供大家参考使用。可以看到x的值,最大和最小相差了几千倍,如果不用对数坐标就很难看到小值的数据的分布了,我们可以通过图片看到不用对数坐标的缺陷。运行的图片:分别是不用对数坐标和用对数坐标的图,如下。可以看到,未使用对数坐标的图片,看不到小数据值的分布,x=4时永远都是处于0的位置。而使用对数坐标后,就可以看到小数据值的分布了。
在使用对数坐标的时候有两行关键代码:

  1. 设置标度:plt.xticks([10, 100, 1000, 10000])
  2. 设置对数刻度:plt.xscale(“log”)

如果大家使用子图,可以使用ax.set_xticks()和ax.set_xscale()来设置对数坐标,用法都大抵相同。

x_1 = [4, 4, 4, 4, 60, 8, 55, 9495]
y_1 = [80, 70, 90, 60, 50.0, 59.0, 60, 75]
x_2 = [4, 4, 4, 4, 58, 8, 49, 9534]
y_2 = [85, 80, 75, 70, 55.0, 60, 50, 75]
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.plot(x_1[0], y_1[0],'o',markersize=13.,label="A")
plt.plot(x_1[1], y_1[1],'o',markersize=13., label="B")
plt.plot(x_1[2], y_1[2],'o',markersize=13., label="C")
plt.plot(x_1[3], y_1[3],'o',markersize=13., label="D")
plt.plot(x_1[4], y_1[4],'o',markersize=13., label="E")
plt.plot(x_1[5], y_1[5],'o',markersize=13., label="F")
plt.plot(x_1[6], y_1[6],'o',markersize=13., label="G")
plt.plot(x_1[7], y_1[7],'o',markersize=13., label="H")
plt.xticks([10, 100, 1000, 10000])
plt.xscale("log")
plt.grid()
plt.legend(loc="lower right")
plt.xlabel("X values", fontsize=12)
plt.ylabel("y values", fontsize=12)

plt.subplot(122)
plt.plot(x_2[0], y_2[0],'o',markersize=13.,label="A")
plt.plot(x_2[1], y_2[1],'o',markersize=13., label="B")
plt.plot(x_2[2], y_2[2],'o',markersize=13., label="C")
plt.plot(x_2[3], y_2[3],'o',markersize=13., label="D")
plt.plot(x_2[4], y_2[4],'o',markersize=13., label="E")
plt.plot(x_2[5], y_2[5],'o',markersize=13., label="F")
plt.plot(x_2[6], y_2[6],'o',markersize=13., label="G")
plt.plot(x_2[7], y_2[7],'o',markersize=13., label="H")
plt.xticks([10, 100, 1000, 10000])
plt.xscale("log")
plt.grid()
plt.legend(loc="lower right")
plt.xlabel("X values", fontsize=12)
plt.ylabel("y values", fontsize=12)
plt.show()

未使用对数坐标图
使用对数坐标图

极轴图的对数坐标的使用

在这里,我直接附上代码和图。可以看到,数据值大的和数据值小的都能得到表现。详解可以见我上面所列举的几个网址和matplotlib官方教程

极轴图官方教程:matplotlib官网教程

在极轴图使用对数坐标时,需要注意几行关键代码:

  1. ax1.set_rlim(math.pow(10, -1),math.pow(10, 2)):设置数据范围
  2. ax1.set_rticks(x_range):设置极轴刻度
  3. ax1.set_rscale(‘symlog’):设置为对数刻度
# Compute pie slices
N = 8
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
width1 = np.pi / 4 * np.random.rand(N)	# 每个扇形的宽度
colors = plt.cm.viridis(radii / 10)		# 颜色

plt.figure(figsize=(15, 16))
radii_1= np.array([0.05, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011])
radii_1 = radii_1 * 100
ax1= plt.subplot(121, projection='polar')
ax1.bar(theta, radii_1, width=width1, bottom=0, color=colors)
ax1.set_rlim(math.pow(10, -1),math.pow(10, 2))
x_range = np.linspace(0.0, 3, 6, endpoint=False)
ax1.set_rticks(x_range)
ax1.set_rscale('symlog')
ax1.set_title("(")

radii_2= np.array([5, 1.1, 25, 1.1, 1.1, 1.1, 1.1, 1.1])
ax2= plt.subplot(122, projection='polar')
ax2.bar(theta,radii_2, width=width1, bottom=0, color=colors)
ax2.set_rlim(math.pow(10, -1),math.pow(10, 2))
x_range = np.linspace(0.0, 3, 6, endpoint=False)
ax2.set_rticks(x_range)
ax2.set_rscale('symlog')
ax2.set_title("(b)")
plt.show()

极轴图

总结

以上就是极轴图的画法和对数坐标的使用方法了,想必大家也看到了对数坐标的优点所在。这种图可以用来可视化比较的数据呀。可能源代码中有些调用的方法大家不明白,可以自行百度其方法的含义。文章可能有瑕疵,还望大家多多包含,予以指正。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值