绘制图形时像素与记录的关系

Relationship between pixel and record on plotting a graph

使用 xrandr 获取我的显示器信息。

xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
VGA-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+

x轴上只有1920个像素,只有1920个小盒子。

import matplotlib.pyplot as plt
y = 1*19200
x = range(0,len(x))
plt.scatter(x,y)
plt.show()

我画一条水平线,包含19200对记录。 x轴上只有1920个像素,如何把19200个物品放入1920个盒子里?
一个像素是否绘制 10 x 条记录? 将 10 条记录放入一个盒子中? 一个像素中有十个不同的数据记录? 一个像素如何表达十条记录?

修正我所有的错字:

import matplotlib.pyplot as plt
y = [1]*19200
x = range(0,len(y))
plt.scatter(x,y)
plt.show()

也就是说有19200对数据记录(x,y)可以绘制,但是这种情况下显示器上真正显示的数据记录最多只有1920对数据记录?
绘制十对(x,y)数据记录多少像素:(0,1) ,(1,1),(2,1),(3,1),(4,1),(5,1 ),(6,1),(7,1),(8,1),(9,1) 就我而言? 在我看来,只有一个像素点才能画出十对(x,y)数据记录,也就是说,只有一对(x,y)数据记录被画成一个像素点,在x轴方向上,有只有1920个像素点,一个像素点画一对(x,y)记录,x轴方向需要19200个像素点。

您发布的代码没有 运行。至少没有x拿一个len()的。 所以它可能应该是这样的:

import matplotlib.pyplot as plt

y = [1]*19200
x = range(0,19200)

plt.scatter(x,y)
plt.show()

但是这样它只是画了一条线。

即使你有一个 19200 像素的显示器,你仍然会看到一条线,每个像素都有一个点。

所以我想你的意思实际上是这样的:

import matplotlib.pyplot as plt
import numpy as np

L = 19200

y = [1]*L
x = [v*(i+1) for i, v in enumerate(np.random.randint(0,2,L))]

plt.scatter(x,y,alpha=0.5)
plt.show()

在一个非常大的显示器上它看起来像这样:

当然你不能在一个像素中显示单独的点,但你可以显示有多少个点适合一个特定的像素。只需为您的情节添加另一个维度。

由于您的绘图只是一条 线 而您并没有真正利用 y 轴,您可以将其用作额外的维度:

x = np.random.randint(0,2,size=(L,10))
y = np.sum(x,axis=1)
x = range(0,L)

plt.fill_between(x,y, alpha=0.5)
plt.show()

它将给出:

条形的高度表示一个像素中的点数。

或者如果你真的想要一个线你可以使用颜色作为额外的维度:

x = np.random.randint(0,2,size=(L,10))
colors = [[(1,1,1),(0,0,1),(0,0.5,1),(0,1,1),(0,1,0.5),(0,1,0),(0.5,1,0),(1,1,0),(1,0.5,0),(1,0,0)][v] for v in np.sum(x,axis=1)]
# or if your prefer monochrome
# colors = [(1,0,0,v/10) for v in np.sum(x,axis=1)]
x = range(0,L)
y = [1]*L

plt.scatter(x,y, c=colors, s=3)
plt.show()

它给出:

单色版:

可以玩玩here

由于图像比 1920 更小,我使用 L 使它们在随机数据上更生动。

更新:

第一组像素有3个点。第二个还有一分。

图片:

你看到第三组有多少分?

如果你的视力好,屏幕大的话,你会看到有2个点。

但是,如果您的视力不佳、屏幕较小或者您只是远离屏幕怎么办。你还能说出有多少点吗?是的,你可以!

当然在某种程度上。如果你站在离屏幕 1 公里的地方,你可能看不到屏幕本身:)

但是你怎么知道呢?根据组的重量 - 它看起来比第一个,比第二个

现在,给某人看下一张图片,告诉他们第一组有树像素。然后问:其他组有多少像素?

图片:

他们可能会告诉您这些组中有 2 个和 1 个像素。 但事实并非如此。有 相同数量的像素 。唯一的区别是这些像素具有 不同的颜色

因此,绘制多少像素并不重要。重要的是他们如何看待。

但不止于此……你说"pixel",但它是一个点吗?不! 在大多数情况下3个不同颜色的点

因此,如果您看到一个红色像素,您可以确定有一个点变亮了。如果您看到黄色 - 有 2 个点变亮。等等。 通过颜色判断,您甚至可以准确地说出构成像素的哪些点被突出显示。

但是,这真的很重要吗?如果你只是说:"this particular color means (0,1)(1,1)(2,1), and this particular color means (3,1)(4,1), etc." 无论显示器及其分辨率如何,人们都会理解你的情节。

但是,不仅如此:当您在显示器上绘制像素时,它甚至不是一个物理像素,而不仅仅是 3 个点。您的显示器的最大分辨率为 8192*8192... 因此在分辨率为 1920*1080 的逻辑上有超过 8 个物理像素。这实际上为一个逻辑提供了超过 16 个物理像素。你也可以

Put 10 x records into just one box?

...如您所见,"box" 相当大。您可以将 16 条记录放入其中。 身体上逻辑上你还可以添加更多。