【问题标题】:Need a box inside the graph that counts the LHS and RHS dots using matplotlib需要在图中使用 matplotlib 计算 LHS 和 RHS 点的框
【发布时间】:2016-04-17 03:47:55
【问题描述】:
import random
import matplotlib.pyplot as plt

num1 = 30
num3 = [4000,3000,1500,9000,2500,8000,1200,800,900,1000,5400,9500,1100,3400,8100,
        5500,1200,3830,2311,9999]
num2 = []
for i in range (len(num3)):
    num2.append(random.randrange(0,45))
print(num2)

plt.axvline(num1,0,color="r")
plt.scatter(num2, num3)

代码运行良好。没有问题。我想知道如何从下图中得到与它所说的完全相同的盒子:

运行代码后,您将看到一个类似的图像,但没有该框。红线上的点被认为是在 RHS 中。我使用 excel 制作了这张图来显示我想要的内容。而且,你只能使用 matplotlib。

我可能需要下面的代码来计数

LHS_count = 0
for value in num2:
    if value < num1:
        LHS_count += 1
        print(LHS_count)
RHS_count = 0
for value in num2:
    if value >= num1:
        RHS_count += 1
        print(RHS_count)

【问题讨论】:

    标签: python arrays for-loop matplotlib graph


    【解决方案1】:

    我会推荐使用 numpy 来做类似的事情

    import matplotlib.pyplot as plt
    import numpy as np
    
    vl_pos = 30
    y = np.array([4000,3000,1500,9000,2500,8000,1200,800,900,1000,5400,9500,1100,3400,8100,
            5500,1200,3830,2311,9999])
    
    x = np.random.random(y.shape) * 45
    
    lhs = (x < vl_pos).sum()
    rhs = (x >= vl_pos).sum()
    lhs,rhs
    
    txt = ("lhs: %s\n"
          "rhs: %s"%(lhs,rhs))
    
    f,a = plt.subplots()
    a.axvline(vl_pos,color="r")
    a.scatter(x, y)
    bbox =dict(facecolor = 'w')
    a.text(0.8, 0.8, txt, bbox = bbox, transform = a.transAxes)
    

    【讨论】:

    • 我不能使用 numpy,因为我拥有的原始代码是基于如果我想绘制 matplotlib 将如何使用。更改该代码是不可能的。工作量太大。如果您使用 matplotlib 为我做这件事,我将不胜感激。
    • 我不太明白。在我的示例中,绘图是使用 matplotlib 完成的。 Numpy 用于处理数据。由于 numpy 是 matplotlib 的依赖项,因此您应该在系统上安装它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多