Как сделать многоцветный цвет в одной строке? [Дубликат]

У меня была проблема запустить его, и я внесли некоторые изменения, чтобы запустить его с mp3-источником. здесь BackfrounSoundService.java файл. что мой mp3-файл находится в моей SD-карте в моем телефоне.

public class BackgroundSoundService extends Service {
    private static final String TAG = null;
    MediaPlayer player;

    public IBinder onBind(Intent arg0) {

        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d("service", "onCreate");
        player = new MediaPlayer();
        try {
            player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your file.mp3");
        } catch (IOException e) {
            e.printStackTrace();
        }
        player.setLooping(true); // Set looping
        player.setVolume(100, 100);

    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("service", "onStartCommand");
        try {
            player.prepare();
            player.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 1;
    }

    public void onStart(Intent intent, int startId) {
        // TO DO
    }

    public IBinder onUnBind(Intent arg0) {
        // TO DO Auto-generated method
        return null;
    }

    public void onStop() {

    }

    public void onPause() {

    }

    @Override
    public void onDestroy() {
        player.stop();
        player.release();
    }

    @Override
    public void onLowMemory() {

    }
}
0
задан bandito40 12 February 2016 в 23:06
поделиться

3 ответа

Я не думаю, что вы можете использовать массив цветов в plot (в документации говорится, что цвет может быть любым цветом matlab, в то время как scatter docs говорят, что вы можете использовать массив).

Однако вы можете подделать его, построив каждую строку отдельно:

import numpy
from matplotlib import pyplot as plt

x = range(10)
y = numpy.random.choice(10,10)
for x1, x2, y1,y2 in zip(x, x[1:], y, y[1:]):
    if y1 > y2:
        plt.plot([x1, x2], [y1, y2], 'r')
    elif y1 < y2:
        plt.plot([x1, x2], [y1, y2], 'g')
    else:
        plt.plot([x1, x2], [y1, y2], 'b')

plt.show()

2
ответ дан Julien Spronck 17 August 2018 в 09:05
поделиться
  • 1
    лол. Это будет моей следующей попыткой. Спасибо за ответ! – bandito40 12 February 2016 в 23:36
  • 2
    На самом деле это можно сделать с помощью LineCollection, но я не понимаю, как его адаптировать к моим потребностям. – bandito40 13 February 2016 в 01:59

OK. Поэтому я понял, как это сделать, используя LineCollecion, чтобы нарисовать линию на оси.

import numpy as np
import pylab as pl
from matplotlib import collections  as mc

segments = []
colors = np.zeros(shape=(10,4))
x = range(10)
y = np.random.choice(10,10)
i = 0

for x1, x2, y1,y2 in zip(x, x[1:], y, y[1:]):
    if y1 > y2:
        colors[i] = tuple([1,0,0,1])
    elif y1 < y2:
        colors[i] = tuple([0,1,0,1])
    else:
        colors[i] = tuple([0,0,1,1])
    segments.append([(x1, y1), (x2, y2)])
    i += 1     

lc = mc.LineCollection(segments, colors=colors, linewidths=2)
fig, ax = pl.subplots()
ax.add_collection(lc)
ax.autoscale()
ax.margins(0.1)
pl.show()

2
ответ дан bandito40 17 August 2018 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: