相关疑难解决方法(0)

如何获得Pandas的盘中价格 - 成交量图?

我有一个DataFrame包含日内价格/数量的数据:

time                  price    volume   
2015-04-15 10:10:00   10       500    
2015-04-15 10:20:00   15       100    
2015-04-15 10:30:00   20       70
2015-04-15 10:30:00   etc      etc
Run Code Online (Sandbox Code Playgroud)

我需要得到一个标准价格 - 交易量表,其中顶部图表包含价格(常规线),底部图表包含交易量(条形图).

当然,两个图表应该共享同一个轴.

到目前为止,我想出了:

plt.figure(figsize=(20,15))          

ax1=plt.subplot2grid((2,2),(0,0),colspan=2)
ax2=plt.subplot2grid((2,2),(1,0),colspan=2)

ax2.xaxis.set_major_locator(HourLocator(interval=3))
ax2.xaxis.set_major_formatter(DateFormatter('%H:%M'))

data.ix['2015-10-01': '2015-10-02','price'].plot(ax=ax1)
data.ix['2015-10-01': '2015-10-02','volume'].plot(ax=ax2, kind='bar')
Run Code Online (Sandbox Code Playgroud)

但是我为条形图获得了超密集的刻度标签(图表无法使用).

我怎样才能简单地指定每小时有一个小刻度,每3小时有一个主要刻度(这样图表仍然可读)?

python numpy machine-learning matplotlib pandas

4
推荐指数
1
解决办法
2731
查看次数

Matplotlib:如何仅设置抽动的最小值和最大值

我有非常相似的代码来绘制:

plt.plot(df_tags[df_tags.detailed_tag == tag]['week'], df_tags[df_tags.detailed_tag == tag].tonality)
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述

但我想这样只保留 x 轴的最小值和最大值:

plt.plot(df_tags[df_tags.detailed_tag == tag]['week'], df_tags[df_tags.detailed_tag == tag].tonality)
plt.xticks([df_tags['week'].min(), df_tags['week'].max()])
print (df_tags['week'].min(), df_tags['week'].max())
Run Code Online (Sandbox Code Playgroud)

不幸的是,他把第二周作为最后一周,但为什么以及如何解决这个问题: 在此输入图像描述

python plot axis matplotlib python-3.x

4
推荐指数
1
解决办法
1万
查看次数

在 matplotlib 中将 x 轴绘制为日期

我正在尝试对数据进行一些分析。我得到了 csv 文件,并将其转换为 Pandas 数据帧。数据看起来像这样。它有几列,但我试图将 x 轴绘制为日期列。.

熊猫数据框看起来像这样

print (df.head(10)

    cus-id        date       value_limit
0   10173         2011-06-12        455
1   95062         2011-09-11        455
2   171081        2011-07-05        212
3   122867        2011-08-18        123
4   107186        2011-11-23        334
5   171085        2011-09-02        376
6   169767        2011-07-03        34
7   80170         2011-03-23        34
8   154178        2011-10-02        34
9   3494          2011-01-01        34
Run Code Online (Sandbox Code Playgroud)

我正在尝试绘制日期数据,因为同一日期有多个值。为此,我试图将 x 坐标刻度绘制为日期。因为日期列中的最小日期是 2011-01-01,最大日期是 2012-04-20。

我试过这样的事情

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates

df = pd.read_csv('rio_data.csv', …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib pandas

4
推荐指数
1
解决办法
3万
查看次数

绘制时间戳对象时,如何更改matplotlib使用的步长?

我目前正在尝试使用matplotlib和pandas库绘制一个相当小的数据集。数据集的格式是CSV文件。这是数据集:

DATE,UNRATE
1948-01-01,3.4
1948-02-01,3.8
1948-03-01,4.0
1948-04-01,3.9
1948-05-01,3.5
1948-06-01,3.6
1948-07-01,3.6
1948-08-01,3.9
1948-09-01,3.8
1948-10-01,3.7
1948-11-01,3.8
1948-12-01,4.0
Run Code Online (Sandbox Code Playgroud)

我使用pandas加载了数据集(可以看到,保存该数据集的文件名为“ dataset.csv”):

import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('dataset.csv')
dataset['DATE'] = pd.to_datetime(dataset['DATE'])
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用matplotlib绘制加载的数据集:

plt.plot(dataset['DATE'], dataset['UNRATE'])
plt.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码通常可以正常工作,并显示以下图形:

在此处输入图片说明

但是,问题是我想要在x轴上显示的数据似乎只是以两个间隔绘制

在此处输入图片说明

我发现了一个问题,要在matplotlib中更改x或y轴上的“刻度频率”吗?,这确实与我的问题有关。但是,从我的测试来看,似乎只能使用整数值

我还发现了这个问题,控制了pyplot中的x ticks数量,这似乎为我的问题提供了解决方案。答案说的使用to_pydatetime的方法是的方法DatetimeIndex。由于我的理解是默认情况下pandas.to_datetime会返回a DatetimeIndex,因此我可以to_pydatetime在上使用dataset['DATE']

plt.xticks(dataset['DATE'].to_pydatetime())
Run Code Online (Sandbox Code Playgroud)

但是,我改为收到错误:

AttributeError: 'Series' object has no attribute 'to_pydatetime'
Run Code Online (Sandbox Code Playgroud)

由于这似乎只是默认行为,有没有办法强迫matplotlib沿x轴绘制每个点,而不是简单地绘制其他每个点?

python matplotlib pandas

4
推荐指数
1
解决办法
3371
查看次数

在 matplotlib 图形上设置自定义刻度间距

我想将刻度之间的空间设置为自定义距离而不是自动生成。我想实现这个图在 y 轴上的作用。https://pasteboard.co/H0XUbpq.jpg

我找到了如何设置自定义刻度的方法,但是轴上的间距仍然相同,然后大多数刻度仍然彼此靠近。所以我希望刻度间隔与 y 轴上刻度之间的空间不同,就像我上面链接的图表一样。

python graph matplotlib

3
推荐指数
1
解决办法
1万
查看次数

Python:Matplotlib imshow shift xlabel 数字

是否可以移动 x 和 y 轴标签编号,例如 +2 ?例如,我创建了此图像,但我希望标签编号以 2 开头:

在此处输入图片说明

我的代码是:

jacaardMatrix = 1.662887377173091485e-01    3.432835820895522305e-01    3.568320278503046006e-01
5.065963060686015651e-02    3.160270880361173984e-01    3.374888691006233121e-01
3.093987157034442520e-02    1.802120141342756221e-01    1.748178980228928259e-01


fig2=plt.figure()  
plt.title("Radius and FRC Jacaard Values for Scoring System: "+str(i))
plt.xlabel('Radius')
plt.ylabel('FRC Size')
plt.imshow(jacaardMatrix)
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib scipy

2
推荐指数
1
解决办法
4393
查看次数

使用matplotlib绘制百分位数

我有三个数据框df1,df2和df3。我将它们合并到一个数据帧df中。现在,我想在数据框中找到每个日期的最小值,5%,25%,中位数,90%和最大值,并将其绘制(每个日期的线图),其中X轴具有百分位数,Y轴具有值。

df1
    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23

df2
    date          value
1   2017-11-07    110.20
2   2017-11-07    500.26
3   2017-11-07    200.16
4   2017-11-07    350.01
5   2017-11-07    89.20

df3
    date          value
1   2017-11-08    101.45 
2   2017-11-08    160.34
3   2017-11-08    41.54
4   2017-11-08    192.42
5   2017-11-08    111.12


df

    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23
5   2017-11-07    110.20
6   2017-11-07    500.26
7 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

2
推荐指数
1
解决办法
3442
查看次数

标签 统计

matplotlib ×7

python ×7

pandas ×4

numpy ×3

axis ×1

graph ×1

machine-learning ×1

plot ×1

python-3.x ×1

scipy ×1