绘制图形时像素与记录的关系
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 条记录放入其中。 身体上。 逻辑上你还可以添加更多。
使用 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 条记录放入其中。 身体上。 逻辑上你还可以添加更多。