python scatter smooth_python – 更新pyplot.scatter的位置和颜色

我一直在努力解决这个问题,无法让它发挥作用.我正在以块的形式读取文件并从中散布绘图数据,我想通过更新for循环中每个块的散点图来“动画化”它(并且还将其调整为实时数据流).

所以这个丑陋的例子就适用于单个情节:

x = [1, 2, 3, 4]

y = [4, 3, 2, 1]

alpha = [0.2, 0.3, 0.8, 1.0]

c = np.asarray([(0, 0, 1, a) for a in alpha])

s = scatter(x, y, marker='o', color=c, edgecolors=c)

但是如何在不重复调用s.remove()和scatter()的情况下更新绘图?完全不直观命名的s.set_array和s.set_offsets应该更新颜色以及x和y位置,但我无法弄清楚如何将它们与我上面的x,y,alpha数据类型一起使用.

(另外,有没有更好的方法在上面的情节中做alpha?)

解决方法:

我找到的解决方案包括使用Normalize根据相关数据制作标准化颜色列表,将其映射到ScalarMappable,并使用它来设置动画每帧的面部颜色和c限制.使用scat,散点图的句柄和speedsList提供颜色数据:

n = mpl.colors.Normalize(vmin = min(speedsList), vmax = max(speedsList))

m = mpl.cm.ScalarMappable(norm=n, cmap=mpl.cm.afmhot)

scat.set_facecolor(m.to_rgba(speedsList))

scat.set_clim(vmin=min(speedsList), vmax=max(speedsList))

这完全符合我的预期.

标签:python,matplotlib,plot,scatter-plot,scatter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
from pyecharts.charts import Bar, Line, Pie, Map, Scatter from pyecharts import options as opts from pyecharts.charts import Grid # 数据准备 x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] y_data1 = [820, 932, 901, 934, 1290, 1330, 1320] y_data2 = [50, 60, 70, 80, 90, 100, 110] y_data3 = [200, 300, 400, 500, 600, 700, 800] y_data4 = [400, 500, 600, 700, 800, 900, 1000] y_data5 = [300, 400, 500, 600, 700, 800, 900] y_data6 = [100, 200, 300, 400, 500, 600, 700] bar = ( Bar() .add_xaxis(x_data) .add_yaxis("销量", y_data1) .set_global_opts( title_opts=opts.TitleOpts(title="柱状图"), legend_opts=opts.LegendOpts(is_show=False), xaxis_opts=opts.AxisOpts(name="日期"), yaxis_opts=opts.AxisOpts(name="销量"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{c}")) ) line = ( Line() .add_xaxis(x_data) .add_yaxis("访问量", y_data2, is_smooth=True) .set_global_opts( title_opts=opts.TitleOpts(title="折线图"), legend_opts=opts.LegendOpts(is_show=False), xaxis_opts=opts.AxisOpts(name="日期"), yaxis_opts=opts.AxisOpts( name="访问量", splitline_opts=opts.SplitLineOpts(is_show=True), axistick_opts=opts.AxisTickOpts(is_show=True), ), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{c}")) ) pie = ( Pie() .pie = Pie("客户性别比例", "好友总人数:350", title_pos="center") .pie.use_theme("dark") .pie.add('', attr, value, is_label_show=True, is_legend_show=True, legend_top='bottom') ) map_data = [("广东", 104), ("湖南", 71), ("北京", 50), ("上海", 50)] map = ( Map() .add("销量", map_data, "china") .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( title_opts=opts.TitleOpts(title="地图"), visualmap_opts=opts.VisualMapOpts(), ) ) custom = "" grid = ( Grid() .add(bar, grid_opts=opts.GridOpts(pos_left="5%", pos_top="5%", width="30%", height="40%")) .add(line, grid_opts=opts.GridOpts(pos_right="5%", pos_top="5%", width="30%", height="40%")) .add(pie, grid_opts=opts.GridOpts(pos_left="35%", pos_top="10%", width="30%", height="80%")) .add(map, grid_opts=opts.GridOpts(pos_right="5%", pos_bottom="5%", width="30%", height="40%")) .add_js_funcs(custom) ) grid.render("123.html") 为什么pie和map图位置都在网页最中间
最新发布
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值