在Python中绘制围绕原点的径向对称的一维数据集

时间:2018-02-22 18:51:36

标签: python matplotlib plot radial-gradients contourf

这可能是一个非常基本的问题,但是我的python知识有点受限,我在解读其他问题和答案方面遇到了一些麻烦,所以我希望有人可以提供帮助...
我有一组1-D数据点(基本上沿着半径的每个点的分子数),我想绘制为2-D径向对称图像。我想围绕原点(0,0)旋转它。 基本上,我有this之类的东西 但我想要this

之类的东西

我已经看到这相对容易使用函数或定义的向量(即scipy的插值模块),但我没有函数或随机生成的数据 - 我有一个名单。我知道必须有一个简单的方法来做到这一点,但如果有人能指出我正确的方向,我真的很感激!

我已经包含了一个非常小的示例数据集(在对数比例中绘制为一条线),供人们使用,如果他们感到如此倾向:

import numpy as np
import matplotlib.pyplot as plt

rad25 = np.array([25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1])
O_rad25 = np.array([1.01E+15,3.00E+14,1.20E+14,5.63E+13,2.90E+13,1.59E+13,9.21E+12,5.53E+12,3.43E+12,2.18E+12,1.42E+12,9.44E+11,6.38E+11,4.37E+11,3.03E+11,2.13E+11,1.51E+11,1.08E+11,7.77E+10,5.60E+10,4.02E+10,2.84E+10,1.94E+10,1.20E+10,5.78E+09])

plt.plot(rad25,O_rad25)
plt.yscale('log')
plt.xlabel('Radius (distance from center in um)')
plt.ylabel('Number of molecules')
plt.show()

2 个答案:

答案 0 :(得分:2)

您需要创建一个0到360度的值数组,然后从此数组和值数组中创建一个meshgrid。然后可以将其绘制在径向投影的子图上。

这样的事情,但是你的原因数据是:

import numpy as np

import matplotlib.pyplot as plt

# Swap out with your data
radialVals = np.linspace(0,1)

azm = np.linspace(0, 2 * np.pi)
r, th = np.meshgrid(radialVals, azm)
z = (r ** 2.0) / 4.0

plt.subplot(projection="polar")

plt.pcolormesh(th, r, z)

plt.plot(azm, r, ls='none') 
plt.grid()

plt.show()

答案 1 :(得分:0)

我从Jon的回答中借了一些(他几乎是正确的),并添加了一个颜色条来说明,但这应该可以得到你想要的东西。由于您知道自己的半径并且数据具有径向对称性,因此极坐标图是自然的选择。

df %>% 
    group_by(Ppg) %>%
    arrange(Ppg, desc(sales))

enter image description here