Python maxplotlib-boxsplot子图+散点图

时间:2020-07-12 06:34:44

标签: python matplotlib boxplot subplot scatter

我正在尝试在箱形图内执行散点图作为子图。当我仅用一个箱形图进行工作时,它就可以工作。我可以在箱图内定义具有特定颜色的特定点。与箱形图的值相比,绿色的球(图1)代表一个特定的数字。

  for columnName in data_num.columns:
    plt.figure(figsize=(2, 2), dpi=100)
    bp = data_num.boxplot(column=columnName, grid=False)
    y = S[columnName]
    x = columnName
    if y > data_num[columnName].describe().iloc[5]:
      plt.plot(1, y, 'r.', alpha=0.7,color='green',markersize=12)
      count_G = count_G + 1
    elif y < data_num[columnName].describe().iloc[5]:
      plt.plot(1, y, 'r.', alpha=0.7,color='red',markersize=12)
      count_L = count_L + 1
    else:
      plt.plot(1, y, 'r.', alpha=0.7,color='yellow',markersize=12)
      count_E = count_E + 1

图片1-散点图+ 1箱图

我可以使用箱线图创建子图。

  fig, axes = plt.subplots(6,10,figsize=(16,16)) # create figure and axes
  fig.subplots_adjust(hspace=0.6, wspace=1)

  for j,columnName in enumerate(list(data_num.columns.values)[:-1]):
    bp = data_num.boxplot(columnName,ax=axes.flatten()[j])

图片2-子图+箱图
但是,当我尝试在每个箱形图中绘制一个特定的数字时,实际上它会订阅整个图。

plt.subplot(6,10,j+1)  
if y > data_num[columnName].describe().iloc[5]:
  plt.plot(1, y, 'r.', alpha=0.7,color='green',markersize=12)
  count_G = count_G + 1
elif y < data_num[columnName].describe().iloc[5]:
  plt.plot(1, y, 'r.', alpha=0.7,color='red',markersize=12)
  count_L = count_L + 1
else:
  plt.plot(1, y, 'r.', alpha=0.7,color='black',markersize=12)
  count_E = count_E + 1

图片3-子图+散点图

1 个答案:

答案 0 :(得分:1)

目前尚不清楚到底出了什么问题。对function saveUserPass(credentials){ if (typeof Android !== 'undefined') { if (Android.saveValues !== 'undefined') { Android.saveValues(credentials.username, credentials.password); } } var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; if (iOS) { window.webkit.messageHandlers.saveValeus.postMessage({"name": credentials.username,"pwd": credentials.password}); } } } 的调用可能正在擦除某些内容。但是,对于现代标准的matplotlib来说,这样的调用不是必需的,其中通过plt.subplot(6,10,j+1)创建了子图。请小心使用fig, axes = plt.subplots()而不是ax.plot()plt.plot()在“当前”轴上绘图,当有很多子图时,这可能会造成混淆。

下面的示例代码首先创建了一些玩具数据(希望与问题中的数据相似)。然后,将方框图和各个点画成一个循环。为避免重复,计数和颜色存储在词典中。由于plt.plot()似乎是中位数,因此出于可读性考虑,代码直接计算了该中位数。

data_num[columnName].describe().iloc[5]

example plot