您发布的代码无法运行。至少没有一个
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)]
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个像素。
但这不是真的。它们有相同数量的像素。唯一的区别是这些像素具有
不同的颜色。
所以,实际上绘制多少像素并不重要。重要的是它们的感知方式。
但更重要的是...你说“像素”,但它是点吗?不!在
大多数情况下,有 3个不同颜色的点。
因此,如果你看到一个红色像素,就可以确定有一个点被点亮了。如果你看到黄色,则有两个点被点亮。通过颜色,甚至可以准确地说出构成该像素的哪些点被突出显示。
但是,这真的很重要吗?如果你只是说:“这种特定的颜色表示(0,1)(1,1)(2,1),而这种特定的颜色表示(3,1)(4,1)等”,人们将理解你的情节,而不管监视器和它们的分辨率如何。
但是,更重要的是:当你在显示器上绘制像素时,它甚至不是单独的物理像素,也不仅仅是三个点。你的显示器具有最大分辨率为8192 * 8192...因此,在分辨率为1920 * 1080的逻辑上,对于一个物理像素,会有超过8个物理像素。这实际上为一个逻辑上的像素提供了超过16个物理像素。所以你能不能
把10条记录放进一个盒子里?
...正如你所看到的,“盒子”相当大。你可以在里面放16条记录。 物理上。而在逻辑上,你甚至可以添加更多。
n
从1到10。1920*10 - >19200。例如,使用图像4所示的方法(给定长度为1920的画布),实际上会绘制19200个像素。 - x00