【问题标题】:Circular contour plotting with different radius in pythonpython中不同半径的圆形等高线图
【发布时间】:2021-05-25 14:16:47
【问题描述】:

我有数据点的 X 和 Y 坐标,对于相应的 (x,y) 坐标,我有一些值。现在我想在每个(x,y)处绘制一个圆形轮廓,因为我使用https://matplotlib.org/3.2.1/api/_as_gen/matplotlib.patches.Circle.html 库来绘制不同半径的圆。 但是在着色时,最大的圆圈颜色会占据所有较小的圆圈。 这是代码供参考。

%matplotlib qt
from scipy.interpolate import griddata
from numpy import linspace
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
locs=pd.read_excel(r"location of coordinates")
x=locs.iloc[:,1].values
y=locs.iloc[:,2].values

i=0
a=[]
b=[]
c=[]
d=[]
while i<len(x):
    temp=plt.Circle(( x[i] , y[i] ), 0.1 ,color='y') 
    a.append(temp)
    temp1=plt.Circle(( x[i] , y[i] ), 0.2 ,fill = False) 
    b.append(temp1)
    temp2=plt.Circle(( x[i] , y[i] ), 0.3 ,color='g') 
    c.append(temp2)
    i+=1
i=0
figure, axes = plt.subplots() 
while i<len(x): 
    axes.add_artist( a[i] ) 
    axes.add_artist( b[i] ) 
    axes.add_artist( c[i] ) 
    plt.title( 'Colored Circle' ) 

    plt.xlim(-3,3.2)
    plt.xticks(np.arange(-3,3.2,0.2))
    plt.ylim(-0.01,1.1)
    plt.yticks(np.arange(-0.1,1.1,0.1))
    i=i+1

plt.scatter(x,y,marker='X',c='r',s=500)
plt.colorbar()
plt.show() 

我正在尝试使用不同颜色的轮廓。此外,我将添加 plt.colorbar 根据哪个“Z”将具有一些值,我们将使用颜色条中的颜色在圆圈中显示颜色。

【问题讨论】:

  • 请注意这不是代码编写或辅导服务。我们可以帮助解决具体的技术问题,而不是对代码或建议的开放式请求。请编辑您的问题以显示您迄今为止尝试过的内容,以及您需要帮助的具体问题。请参阅How To Ask a Good Question 页面,详细了解如何最好地帮助我们。
  • @itprorh66 抱歉没有写出完整的问题,我已经用代码和输出编辑了问题。

标签: python-3.x matplotlib scatter-plot contour


【解决方案1】:

在您对plt.Circle 的一次调用中,您只有一个fill=False。因此,您的第一个选择是将fill=False 添加到其他圈子。

如果你想保持它们被填满,你需要确保圆圈的zorder随着半径的减小而增加。

while i<len(x):
    temp=plt.Circle(( x[i] , y[i] ), 0.1 ,color='y', zorder=3) 
    a.append(temp)
    temp1=plt.Circle(( x[i] , y[i] ), 0.2 ,fill = False, zorder=2) 
    b.append(temp1)
    temp2=plt.Circle(( x[i] , y[i] ), 0.3 ,color='g', zorder=1) 
    c.append(temp2)
    i+=1

或者,如果您最后绘制最小的圆圈,它将被绘制在较大的圆圈之上:

while i<len(x): 
    axes.add_artist( c[i] ) 
    axes.add_artist( b[i] ) 
    axes.add_artist( a[i] ) 

【讨论】:

  • 圆的排序在这里有帮助,非常感谢。我没有想到这个。
  • 如果你不介意这个话题,我可以问一个问题吗?
  • 好的,继续。
  • 目前我正在指定圆圈的颜色,但我希望它们根据标准化的 z 值着色,与带有颜色条的 plt.color 相同。为此,我编写了一个小脚本,其中颜色以 0.1 的步长变化,但我想要与 plt.colorbar 相同的精度,因为我必须用颜色名称一次又一次地重复相同的脚本,无论如何我可以使用 plt.colorbar 吗? color 和 plt.colorbar 在这里?
  • THhs 是我用于着色的脚本:colour_coding=['lightpink','pink','crimson','palevioletred','deeppink','fuchsia','mediumorchid','indigo','orange','tomato', 'red'] def color_code(value): if value&gt;=0 and value&lt;=0.1: return 1 elif value&gt;0.1 and value&lt;=0.2: return 2; elif value&gt;0.2 and value&lt;=0.3: return 3; elif value&gt;0.3 and value&lt;=0.4: return 4; 上升到十个,而在颜色上我只是调用这个函数来检查值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多