草庐IT

Matplotlib 散点图

runoob 2023-04-07 原文

Matplotlib 散点图

我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。

scatter() 方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 'o'。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

以下实例 scatter() 函数接收长度相同的数组参数,一个用于 x 轴的值,另一个用于 y 轴上的值:

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

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

显示结果如下:

设置图标大小:

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.scatter(x, y, s=sizes)
plt.show()

显示结果如下:

自定义点的颜色:

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

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

显示结果如下:

设置两组散点图:

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')

plt.show()

显示结果如下:

使用随机数来设置散点图:

实例

import numpy as np
import matplotlib.pyplot as plt

# 随机数生成器的种子
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度

plt.title("RUNOOB Scatter Test") # 设置标题

plt.show()

显示结果如下:

颜色条 Colormap

Matplotlib 模块提供了很多可用的颜色条。

颜色条就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100 的值。

下面是一个颜色条的例子:

设置颜色条需要使用 cmap 参数,默认值为 'viridis',之后颜色值设置为 0 到 100 的数组。

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.show()

显示结果如下:

如果要显示颜色条,需要使用 plt.colorbar() 方法:

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar()

plt.show()

显示结果如下:

换个颜色条参数, cmap 设置为 afmhot_r

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='afmhot_r')
plt.colorbar()
plt.show()

显示结果如下:

颜色条参数值可以是以下值:

颜色名称   保留关键字
Accent   Accent_r
Blues   Blues_r
BrBG   BrBG_r
BuGn   BuGn_r
BuPu   BuPu_r
CMRmap   CMRmap_r
Dark2   Dark2_r
GnBu   GnBu_r
Greens   Greens_r
Greys   Greys_r
OrRd   OrRd_r
Oranges   Oranges_r
PRGn   PRGn_r
Paired   Paired_r
Pastel1   Pastel1_r
Pastel2   Pastel2_r
PiYG   PiYG_r
PuBu   PuBu_r
PuBuGn   PuBuGn_r
PuOr   PuOr_r
PuRd   PuRd_r
Purples   Purples_r
RdBu   RdBu_r
RdGy   RdGy_r
RdPu   RdPu_r
RdYlBu   RdYlBu_r
RdYlGn   RdYlGn_r
Reds   Reds_r
Set1   Set1_r
Set2   Set2_r
Set3   Set3_r
Spectral   Spectral_r
Wistia   Wistia_r
YlGn   YlGn_r
YlGnBu   YlGnBu_r
YlOrBr   YlOrBr_r
YlOrRd   YlOrRd_r
afmhot   afmhot_r
autumn   autumn_r
binary   binary_r
bone   bone_r
brg   brg_r
bwr   bwr_r
cividis   cividis_r
cool   cool_r
coolwarm   coolwarm_r
copper   copper_r
cubehelix   cubehelix_r
flag   flag_r
gist_earth   gist_earth_r
gist_gray   gist_gray_r
gist_heat   gist_heat_r
gist_ncar   gist_ncar_r
gist_rainbow   gist_rainbow_r
gist_stern   gist_stern_r
gist_yarg   gist_yarg_r
gnuplot   gnuplot_r
gnuplot2   gnuplot2_r
gray   gray_r
hot   hot_r
hsv   hsv_r
inferno   inferno_r
jet   jet_r
magma   magma_r
nipy_spectral   nipy_spectral_r
ocean   ocean_r
pink   pink_r
plasma   plasma_r
prism   prism_r
rainbow   rainbow_r
seismic   seismic_r
spring   spring_r
summer   summer_r
tab10   tab10_r
tab20   tab20_r
tab20b   tab20b_r
tab20c   tab20c_r
terrain   terrain_r
twilight   twilight_r
twilight_shifted   twilight_shifted_r
viridis   viridis_r
winter   winter_r

有关Matplotlib 散点图的更多相关文章

  1. ruby - 在 ruby​​ 中使用 matplotlib.image 是否有等效项 - 2

    一直在尝试在jupyternotebook中使用Ruby。使用Python我可以做到这一点importmatplotlib.imageasmpimg有谁知道Ruby的等价物,我没能在任何iRuby或sciruby文档中找到它?澄清一点,在我的gemfile中我有这个gem'iruby'gem'cztop'gem'matplotlib'但似乎无法访问我习惯在python中使用的matplotlib的image部分。我正试图找到在Python中我会这样写的Ruby版本#importingsomeusefulpackagesimportmatplotlib.pyplotaspltimport

  2. Matplotlib.Colors.ListedColorMap在Python中 - 2

    defplot_decision_regions(X,y,classifier,resolution=0.02):#setupmarkergeneratorandcolormapmarkers=('s','x','o','^','v')colors=('red','blue','lightgreen','gray','cyan')cmap=ListedColormap(colors[:len(np.unique(y))])#plotthedecisionsurfacex1_min,x1_max=X[:,0].min()-1,X[:,0].max()+1x2_min,x2_max=X[:,1].

  3. javascript - 带有图例和其他颜色的 Google Charts API 散点图 - 2

    我有一个例子://LoadtheVisualizationAPIandthepiechartpackage.google.load('visualization','1.0',{'packages':['corechart']});//SetacallbacktorunwhentheGoogleVisualizationAPIisloaded.google.setOnLoadCallback(drawChart1);//Callbackthatcreatesandpopulatesadatatable,//instantiatesthepiechart,passesinthedataa

  4. javascript - 以编程方式为 Highcharts 散点图上的某个点触发点击事件 - 2

    实际上,我的需求很小,其中有一个散点图,其中包含点列表和下拉列表。当我从下拉列表中选择一个项目时,应该触发其相应的数据点点击。当我在图表上选择一个数据点时,必须执行一些操作并且下拉列表应该根据选择进行更新。我们有什么办法可以做到这一点吗?我试过firePointClick,事件未定义,我希望事件与手动点击发生时我们得到的事件相同,还有其他方法吗?或任何改进 最佳答案 它不是API的一部分,但可以使用名为firePointEvent的内部API函数来完成:chart.series[0].data[0].firePointEvent('

  5. javascript - 如何偏移散点图中的轴? - 2

    我想在散点图中的数据点周围、极值点和轴之间留出一点额外空间。Chart.jsdocumentation列出了据称常见的offset属性,这听起来和我想要的完全一样,但它似乎只适用于水平标记轴(代码片段的前半部分)。它对散点图(下半部分)没有任何作用。我是不是做错了什么,或者这只是不受支持?解决方法是什么?varoptions,ctx;options={type:'line',data:{labels:[0,1,2],datasets:[{data:[0,1,0]}]},options:{scales:{xAxes:[{offset:true}],yAxes:[{offset:true}

  6. javascript - Google Visualization API - 一张图表上的折线图和散点图 - 2

    有谁知道是否可以使用GoogleVisualizationsGallery中的默认Google散点图来绘制一个散点图,该散点图既有一个仅包含点的系列,一个具有最佳拟合线的系列,并在此之上图表中的一组线表示限制。即+/-20%等我们需要的图表其实是一个ControlChart在图表上显示多个系列和每个系列的单独格式。即一些系列只有点其他系列有一条最适合的线。有人知道已经使用GoogleVisualizationAPI完成的控制图吗? 最佳答案 在使用googlevisualizationapi一段时间并在网上搜索后,我不得不说这里的答

  7. javascript - 在 Chart.js 2 中修改散点图的 X 轴标签 - 2

    在Chart.js2中,我生成了一个散点图,其中x坐标是Epoch时间戳,y坐标是整数。我想知道是否有一种方法可以格式化图表的x轴标签,以便日期以人类可读的格式显示。更新:目前我正在从以毫秒为单位的Unix时间戳构建我的图表。该原型(prototype)的其他部分使用Date类的toDateString方法格式化这些日期(例如FriAug52016)。 最佳答案 为此,您可以使用scales.xAxes选项中的ticks.userCallback,以便为每个xaxis刻度返回格式化日期。如果您使用的是momentjs附带的捆绑版本c

  8. javascript - 带序号的 nvd3 散点图 - 2

    我是d3和nvd3的新手,想创建一个简单的散点图,就像example但带有ordinaly轴。所以y轴值是分类字符串。这是我认为我需要做的:varxfun=function(d){returnd.Pos}//simpleints,yfun=function(d){returnd.Title}//theordinalvaluesvarchart=nv.models.scatterChart().showDistX(true).showDistY(true).color(d3.scale.category10().range()).margin({top:30,right:20,botto

  9. javascript - d3.js 散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数 - 2

    我已经构建了一个具有缩放/平移功能的d3.js散点图。您可以在此处查看完整内容(单击“在新窗口中打开”以查看完整内容):http://bl.ocks.org/129f64bfa2b0d48d27c9有几个我一直无法弄清楚的功能,如果有人能指出正确的方向,我会很乐意帮助它:我想对区域应用X/Y缩放/平移边界,这样您就不能将其拖动到特定点(例如零)以下。我还尝试过创建Googlemap风格的+/-缩放按钮,但没有成功。有什么想法吗?更不重要的是,还有几个领域我已经找到了解决方案,但它非常粗糙,所以如果您有更好的解决方案,请告诉我:我添加了一个“重置缩放”按钮,但它只是删除图表并在其位置生成

  10. javascript - nvd3中的线+散点图 - 2

    是否可以在nvd3.js中组合折线图和散点图,而无需像示例和代码中使用linePlusBarChart那样构建新模型?或者这是您可以组合图表类型的唯一方法? 最佳答案 看看这个fiddle,给你一些想法fiddle 关于javascript-nvd3中的线+散点图,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13959156/

随机推荐